О. А вот и тот пример, описывающий как раз, почему я говорил, что, в частности, статичный ContentLoaderInfo - это плохо.
Смысл-то тот же самый, можно расширить Loader и присвоить ему идентификатор name, но при срабатывании события error, линки из ContentLoaderInfo в Loader ещё нет, конечно будет 2099. Красивое решение могло бы быть, если кто мне скажет-таки как сделать динамичный ContentLoaderInfo, чтобы идентификатор name можно было давать не только в Loader, но и в ContentLoaderInfo.
Могу поделится своим некрасивым решением:

Код:
private function loadError (e:Event) {
trace(e.text);
for (var i:int=0; i<_loadersN; i+=1) {
if (loaders[i].contentLoaderInfo==e.target) {
loaders[i].state = -1;
}
}
_loadFailed = true;
loadProgress(e);
}
Смысл в чём: храним линки на все лоадеры в массиве, когда возникает error, мы не можем определить какому лоадеру принадлежит ContentLoaderInfo, который сгенерил ошибку изнутри. Но снаружи можем, т.к. каждый лоадер уже имеет ссылку на свой ContentLoaderInfo, надо их просто сравнить в цикле.
Другой вариант (ещё хуже), но работает у меня в двух проектах:
Изнутри ContentLoaderInfo мы можем убивать слушателей, наличие слушателя - это целый бит информации!

Возникает ошибка ввода-вывода - убиваем слушателя IOErrorEvent.IO_ERROR(removeEventListener), возникает ошибка доступа - убиваем слушателя SecurityErrorEvent.SECURITY_ERROR, нормально загрузилось - убиваем Event.COMPLETE.
По окончании загрузки пробегаем по всем лоадерам, и по наличию слушателей (hasEventListener) определяем, кто как кончил.
Да нормально Флэш грузит по крайней мере до 100 файлов параллельно, надо только помнить, что в онлайне, в браузерах есть ограничения на потоки: IE7 обычно по умолчанию даёт грузить только 4 файла одновременно, FF - 2. Но файлы всё равно загрузяться все.