PDA

Просмотр полной версии : Проблемы с spark.modules:ModuleLoader, много и сразу


AlexLucas
12.11.2012, 15:47
Доборого времени суток.
Недавно перешёл на флекс, для подгрузки отдельных свф (модулей) использую спарковский ModuleLoader.

1) Во FlashDevelop нет автокомплита для этого компонента, ровно как и для всего spark.modules.*, в импортированных мной *.swc нет классов которые бы конфликтовали с ModuleLoader, но он конфиликтует когда я импортирую и создаю переменную типа mx.modules:ModuleLoader.

2) Для подгрузки множества модулей, я создал очередь, где проверяется если модуль подгрузился, и в этом случае снова вызывается функция подгрузки:
private function loadModule():void {
if (modulesToLoad.length > 0) {

var url:String = modulesToLoad[0];

modulesToLoad.splice(0, 1);

var ldr:spark.modules.ModuleLoader = new spark.modules.ModuleLoader();

ldr.addEventListener(ModuleEvent.READY, onLoadComplete);
ldr.addEventListener(ModuleEvent.ERROR, onLoadError);
ldr.applicationDomain = ApplicationDomain.currentDomain;
ldr.loadModule(url);
}
}
Тут я создаю для каждого вызова отдельный лоадер, и уже в onLoadComplete, после того как я сделал с подгруженным модулем всё что мне надо, убиваю его. Непонятно почему, но когда я создал ещё одну переменную ModuleLoader в этом же классе и заставил её параллельно подгружать дургой модуль, то вообще ничего не подгружается. Если ставлю оба ModuleLoader в очередь, и сначала даю скачать одному, потом другому, подгружается только первый модуль, и всё. Не заходит ни в onLoadComplete, ни в onLoadError, вообще ничего, тишина. По событию ModuleEvent.PROGRESS вижу что модуль подгружается, но до onLoadComplete не доходит.

3) В связи с этим просто создаю один лоадер для всего, эффект тот же что и в 2). Пытаюсь выгрузить модуль перед загрузкой следующего :trace(moduleLoader.child); // TextTool124
moduleLoader.unloadModule();
moduleLoader.loadModule(url);
Это выдаёт ошибку[Fault] exception, information=ArgumentError: TextTool124 is not found in this Group.
Как так!? Выше мы же видим что TextTool124 присутствует. Из какой группы он пытается его удалить? Все модули сами по себе без ошибок и работают нормально.

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