我正在使用此类同步加载多个图像。不知怎的,加载器不会触发任何事件(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);
}
}
}
答案 0 :(得分:6)
好的,明白了。 这样:
loader.addEventListener(ProgressEvent.PROGRESS, progress);
loader.addEventListener(Event.COMPLETE, this.ready);
应该读到:
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progress);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, ready);
我甚至不知道为什么Loader-Class有addEvenListener方法 - 冗余任何人?
答案 1 :(得分:3)
我对弱听众有同样的问题,正常工作正常
//BUG event not fired
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler,false,0,true);
//OK event fired
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
答案 2 :(得分:1)
我有类似的东西,但后来我将我的加载器从一个新的Loader()更改为一个URLLoader(),它与loader.addEventListener一起工作。
此页面帮助了我:http://livedocs.adobe.com/flex/3/html/help.html?content=17_Networking_and_communications_3.html