まず第一に、load
メソッドは非同期であるため、コード内のこれら 3 つの呼び出しは互いに連続してオーバーライドされます。イベントがディスパッチされる唯一の呼び出しはCOMPLETE
、最後の呼び出しです。ファイルを非同期でロードする場合は、ファイルごとに URLLoader のインスタンスを作成する必要があります。
第二に、(そしてあなたの質問にもっと)最初に呼び出されたにアクセスできるようにするプロパティがURLLoaderクラスにありません。URLRequest
load()
これを回避する簡単な方法は、拡張することURLLoader
です。たとえば、URL のみが必要な場合:
public class MyURLLoader extends URLLoader
{
private var _url:String;
public function MyURLLoader(request:URLRequest=null)
{
super(request);
}
override public function load(request:URLRequest):void
{
super.load(request);
_url = request.url;
}
public function get url():String
{
return _url;
}
}
次に、コードで単一のイベント ハンドラーを使用できます。
public function loadAllCSS():void {
loadCSSFile("cssFile1");
loadCSSFile("cssFile2");
loadCSSFile("cssFile3");
}
private function loadCSSFile(cssURL:String):void {
var urlLoader:MyURLLoader = new MyURLLoader();
urlLoader.addEventListener(Event.COMPLETE, urlLoader_complete);
urlLoader.load(new URLRequest(cssURL));
}
private function urlLoader_complete(evt:Event):void {
var cssURL:String = evt.target.url; //now I know where this came from
var css:String = evt.data;
}