0

我正在使用 URLLoader 加载多个 xml 文件。

for (var i=0;i<xmlCount;i++) {
     loadXML(xmlFiles[i], i);
}

public function loadXML(req:String=null, _id:Number=0):void {
     var loader:URLLoader = new URLLoader();
     loader.addEventListener(ProgressEvent.PROGRESS, 
             function a(e:ProgressEvent) {XMLLoadProgress(e, _id);});
     loader.addEventListener(Event.COMPLETE, XMLLoadFinished);
     loader.load(new URLRequest(req));

}

private function XMLLoadProgress(e:ProgressEvent=null, _id:Number=0):void {
     dispatchEvent(new LoadingEvent(Model.LOADING_PROGRESS, _id, (e.bytesLoaded/e.bytesTotal)*100));
}

问题是我认为 LOADING_PROGRESS 在所有加载完成后会被调度,并且每个 xml 都不是异步加载的。

我怎样才能让它异步加载,并让它为每个进度滴答调用进度事件。

4

2 回答 2

0

You can customize the URLLoader.

public function SequenceLoader extends URLLoader {
    private var index:int;

    public function SequenceLoader(index:int) {
        this.index = index;
    }
}

then in each loadXML, mark the loader:

public function loadXML(req:String=null, _id:Number=0):void {
     var loader:SequenceLoader = new SequenceLoader(_id);
     loader.addEventListener(ProgressEvent.PROGRESS, 
             function a(e:ProgressEvent) {XMLLoadProgress(e);});
     loader.addEventListener(Event.COMPLETE, XMLLoadFinished);
     loader.load(new URLRequest(req));
}

private function XMLLoadProgress(e:ProgressEvent=null):void {
   var loader:SequenceLoader  = e.target as SequenceLoader;
   var loaderIndex:int = loader.index;
  //do other stuff
}
于 2013-01-14T12:00:12.420 回答
0

我猜这只有在通过快速连接查看时才会发生。尝试使用慢速连接查看(Charles Proxy 能够人为地减慢您的连接速度)。

于 2010-06-04T07:01:02.763 回答