PDA

Просмотр полной версии : Подгрузка модулей срабатывает случайно


AlexLucas
25.01.2013, 15:49
Доброго времени суток.
Очень давно постил тему с этой же проблемой, но потом сменились приоритеты , да и ответов небыло.
Дело вот в чём - пытаюсь подгрузить модули через spark:ModuleLoader таким образом
private function loadModule():void {
if (modulesToLoad.length > 0) {

var url:String = modulesToLoad[0];
modulesToLoad.splice(0, 1);


var moduleLoader:ModuleLoader = new ModuleLoader();
moduleLoader.addEventListener(ModuleEvent.READY, onLoadComplete);
moduleLoader.addEventListener(ModuleEvent.ERROR, onLoadError);
moduleLoader.addEventListener("progress", checkProgress);
moduleLoader.loadModule(url);
}
}
modulesToLoad содержит УРЛы к модулям.
Функция подгружает один модуль, в onLoadComplete он обрабавывается, и этой же функции скармиливается следующий УРЛ.
Иногда, при запуске подгружаются все модули, иногда - нет. Просто изменив порядок подгрузки модулей они могут подгрузиться все, или не все. Всё это при том что я не делаю вообще никаких изменений в коде.
Причём когда модуль не подгружается, progress тикает и показывает что модуль подгружен полностью, но не диспатчится ни error, ни ready. В чём может быть дело? Это компилятор так шалит?
Если ошибка в коде, найти её можно только методом тыка, т.к.все модули компилятся без ошибок или предупреждений и по отдельности грузятся без проблем.
Да и модули по сути - одинаковые все.

Видимо глюк дебажного плеера, в релизном всё грузится.

AlexLucas
28.05.2013, 18:52
Пришлось недавно достать эту задачу из долгого ящика, т.к. на тот момент не была приоритетной, но сейчас эта самая подгрузка в некоторых браузерах (Хром - pepperflash Отключён), IE) не срабатывает, а в остальных срабатывает.
Никто не встречался с подобной проблемой ?
Или никто не использует spark:ModuleLoader для подгрузки модулей ?

djyamato
31.05.2013, 14:05
Я слышал и не раз что ModuleLoader глючный, то ли память течет то ли что-то еще. Я обхожу его стороной.
Впрочем, согласен с этим
Что касается ModuleLoader, то есть его исходный код, ставьте точки останова, смотрите происходящие вызовы.

AlexLucas
05.06.2013, 20:34
GC убивает локальный подгрузчик и его слушатели до того как подгрузится модуль. Решил всё просто сохранением ссылки на него в приватной переменной.
Ну как так же, слушатели повесил без weakReference, почему он его убил ?