Вы можете загружать каждый 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
в качестве счетчика, который увеличивается на единицу при каждом событии "complete" объекта UrlLoader
.
Когда вызывается обработчик события onComplete()
, он помещает данные, загруженные объектом URLLoader
, в массив с именем _data
.Наконец, оператор if проверяет, были ли загружены все URL, если нет, он увеличивает счетчик, если это так, он выполняет остальную часть кода в приложении, в данном случае trace("complete");
.