下面是详细讲解“Flash AS3教程:ClassLoader类”的完整攻略。
ClassLoader类
ClassLoader类是一个可以在运行时动态加载SWF文件或者外部PNG、JPG等图片格式文件的类。使用ClassLoader能够使我们的应用程序获取更多的数据和功能,来实现更多炫酷的效果。在本篇教程中,我们将学习如何使用ClassLoader类来动态加载SWF文件。
使用ClassLoader类
步骤1:创建一个Loader对象
首先,在Flash AS3中创建一个Loader对象,用来加载SWF文件。
var loader:Loader = new Loader();
步骤2:监听加载完成事件
监听loader的Event.COMPLETE事件,当SWF文件加载完成后会自动触发该事件。
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
步骤3:加载SWF文件
使用Loader对象的load()方法来加载SWF文件。load()方法接收一个URLRequest对象作为参数,指示将要加载的SWF文件的位置。
loader.load(new URLRequest("swf/loader.swf"));
步骤4:使用加载完成后的SWF文件
当SWF文件加载完成后,我们可以从loader.contentLoaderInfo中获取SWF内容,并将其添加到我们的应用程序中。
function onComplete(e:Event):void {
addChild(loader.content);
}
这里的addChild()方法用来把SWF文件添加到应用程序的显示列表中。
示例1:在应用程序中加载外部SWF文件
下面是一个简单的示例,演示如何在应用程序中加载外部的SWF文件。在该示例中,我们通过添加一个加载进度条,来显示文件的加载进度。
package {
import flash.display.*;
import flash.events.*;
import flash.net.URLRequest;
import flash.text.*;
import flash.utils.*;
public class Main extends Sprite {
private var loader:Loader;
private var tf:TextField;
private var progressBar:Sprite;
private var progressMask:Sprite;
public function Main() {
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);
tf = new TextField();
tf.x = 10;
tf.y = 10;
tf.text = "Loading...";
addChild(tf);
progressBar = new Sprite();
progressBar.graphics.lineStyle(1, 0x000000);
progressBar.graphics.beginFill(0xffffff);
progressBar.graphics.drawRect(0, 0, 200, 10);
progressBar.x = 10;
progressBar.y = 30;
addChild(progressBar);
progressMask = new Sprite();
progressMask.graphics.beginFill(0x000000);
progressMask.graphics.drawRect(0, 0, 0, 10);
progressMask.x = 10;
progressMask.y = 30;
progressBar.mask = progressMask;
loader.load(new URLRequest("http://www.example.com/loader.swf"));
}
private function onComplete(e:Event):void {
removeChild(tf);
removeChild(progressBar);
addChild(loader.content);
}
private function onProgress(e:ProgressEvent):void {
var percent:Number = e.bytesLoaded / e.bytesTotal;
progressMask.graphics.clear();
progressMask.graphics.beginFill(0x000000);
progressMask.graphics.drawRect(0, 0, progressBar.width * percent, 10);
}
}
}
示例2:在SWF文件中加载外部图片
下面是另一个示例,演示如何在SWF文件中加载外部的图片。在该示例中,我们使用ClassLoader类来加载图片,然后把它添加到应用程序中显示出来。
package {
import flash.display.*;
import flash.events.*;
import flash.net.URLRequest;
import flash.system.*;
public class Main extends Sprite {
private var imageLoader:ClassLoader;
public function Main() {
Security.allowDomain("*");
imageLoader = new ClassLoader();
imageLoader.addEventListener(Event.COMPLETE, onComplete);
imageLoader.load("http://www.example.com/image.jpg");
}
private function onComplete(e:Event):void {
var bitmap:Bitmap = imageLoader.getContentAs("Bitmap") as Bitmap;
addChild(bitmap);
}
}
}
在以上的示例中,我们先是调用了Security.allowDomain("*"),这是为了允许我们的应用程序跨域加载图片。创建一个ClassLoader对象后,我们监听了它的COMPLETE事件。在事件处理函数中,我们使用getContentAs()方法从ClassLoader对象中获取图像的Bitmap对象,然后把它添加到显示列表中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Flash AS3教程:ClassLoader类 - Python技术站