Показать сообщение отдельно
Старый 02.06.2007, 15:56
Dendroid вне форума Посмотреть профиль Отправить личное сообщение для Dendroid Посетить домашнюю страницу Dendroid Найти все сообщения от Dendroid
  № 7  
Ответить с цитированием
Dendroid
 
Аватар для Dendroid

Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
О. А вот и тот пример, описывающий как раз, почему я говорил, что, в частности, статичный 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. Но файлы всё равно загрузяться все.
__________________
Верить никому нельзя. Мне - можно. :)


Последний раз редактировалось Dendroid; 02.06.2007 в 15:58.