sai*_*otd 3 flash actionscript-3
我正在使用此类同步加载多个图像.不知怎的,加载器不会触发任何事件(Event.COMPLETE,ProgressEvent.PROGRESS),奇怪的是我也没有得到任何错误(使用FlashDevelop和Flex3 SDK).
package
{
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.*;
import flash.net.URLRequest;
public class MultiImgLoader extends EventDispatcher
{
private var img_array:Array;
public var images:Array;
private var loader:Loader = new Loader();
public function MultiImgLoader(img_array:Array)
{
this.img_array = img_array;
trace("[MultiImgLoader] about to load " + img_array.length);
if (img_array.length > 0)
{
load(img_array[0]);
}
}
private function load(img:String):void
{
trace("[MultiImgLoader] load " + img);
loader.addEventListener(ProgressEvent.PROGRESS, progress);
loader.addEventListener(Event.COMPLETE, this.ready);
var req:URLRequest = new URLRequest(img);
loader.load(req);
}
public function ready(ev:Event):void
{
var key:String = ev.target.contentLoaderInfo.url;
trace("[MultiImgLoader] ready " + key);
images.push( { key : ev.target } );
if (img_array.length > images.length)
{
for (var i:int = 0; i < img_array.length; i++ )
{
if (img_array[i] == key)
{
load(img_array[i+1]);
}
}
}
}
public function progress(ev:ProgressEvent):void
{
trace(ev.bytesLoaded);
}
}
}
Run Code Online (Sandbox Code Playgroud)
好的,我知道了.这个:
loader.addEventListener(ProgressEvent.PROGRESS, progress);
loader.addEventListener(Event.COMPLETE, this.ready);
Run Code Online (Sandbox Code Playgroud)
应该读这个:
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progress);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, ready);
Run Code Online (Sandbox Code Playgroud)
我甚至不知道为什么Loader-Class有addEvenListener方法 - 冗余任何人?