您可以依次加载每个 url,如下例所示:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
public class Main extends Sprite
{
private var _urls:Vector.<String>;
private var _counter:int;
private var _data:Array;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}// end function
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
_urls = Vector.<String>(["text1.txt", "text2.txt", "text3.txt" ]);
_counter = 0;
_data = [];
loadNext();
}// end function
private function loadNext():void
{
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, onComplete);
urlLoader.load(new URLRequest(_urls[_counter]));
}// end function
private function onComplete(event:Event):void
{
_data.push((event.target as URLLoader).data);
if (_counter++ == (_urls.length - 1)) trace("complete");
else loadNext();
}// end function
}// end class
}// end package
这些方法loadNext()
和onComplete()
作为一个循环。当loadNext()
被调用时,一个对象被实例化并在对象URLLoader
中加载一个 url 。它使用对象作为计数器,在每个对象的“完成”事件时递增。Vector.<String>
_urls
_counter
UrlLoader
当onComplete()
事件处理程序被调用时,它将URLLoader
对象加载的数据推送到一个名为_data
. 最后一个 if 语句检查是否所有的 url 都已加载,如果没有,它增加计数器,如果是,它执行应用程序中的其余代码,在这种情况下trace("complete");
。