Прежде всего, поскольку метод load
является асинхронным, эти три вызова в вашем коде будут последовательно переопределять друг друга.Единственный вызов, который приведет к отправке события 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;
}