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 が非同期ではなく 1 つずつ読み込まれることです。

どうすれば非同期にロードし、進行状況ティックごとに進行状況イベントが呼び出されるようにすることができますか。

4

2 に答える 2

0

これは、高速接続で表示している場合にのみ発生すると思います。低速の接続で表示してみてください (Charles Proxy には、人為的に接続を遅くする機能があります)。

于 2010-06-04T07:01:02.763 に答える
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
}
于 2013-01-14T12:00:12.420 に答える