2010-06-03 44 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 
}