次の例のように、各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");
。