2010-06-03 43 views
0

我使用URLLoader加载多个XML文件。多个URLLoader

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加载一个个不是异步。

我怎样才能使它异步加载,也使得它为每个进度打勾调用进度事件。

回答

0

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

+0

试图与模拟下载,但它并没有改变。 – gok 2010-06-04 13:10:55

0

您可以自定义URLLoader。

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

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

然后在每个loadXML的,标志着装载机:

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 
}