Вы можете использовать event.currentTarget в качестве поиска индекса, , пока вы удаляете все свои ссылки, у вас не должно возникнуть проблем. Однако обратите внимание, что прослушиватели событий загрузчика добавляются в loader.contentLoaderInfo, поэтому доступ к загрузчику осуществляется через e.currentTarget.loader.
Также стоит упомянуть, что более простой подход в этой ситуации заключался бы в построении системы на основе очередей, поэтому она загружала только один файл за раз. Например, хранение всех файлов в массиве. Затем в COMPLETE или IO_ERROR вы обработаете текущий файл, а затем начнете следующий. Это было бы немного лучше по ресурсам (только один загрузчик), и избежать проблем со сборкой мусора.
Мне также немного любопытно, почему вы используете анонимные функции? Они не очень хороши с точки зрения сборки мусора и на самом деле усложняют эту ситуацию. Это требование?
Редактировать: Вот примерный (и неполный) пример того, как система на основе очереди решит эту проблему.
var loader:Loader;
var queue:Array;
function addFile(file:File):void
{
queue.push(file);
}
function handleLoadedAsset(e:Event):void
{
var currentFile:File= queue[0];
//do whatever
stepQueueForward();
}
function handleFailedAssetLoad(e:IOErrorEvent):void
{
var currentFile:File = queue[0];
//clean up
stepQueueForward();
}
function stepQueueForward():void
{
queue.splice(0, 1);
var nextFile:File = queue[0];
loader.load(new URLRequest(nextFile.url));
}