![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2012
Сообщений: 14
|
Господа, здравствуйте!
Есть одна непонятная ситуация... По сути: Загружаем swf модуль и проверяем реализовывает ли он интерфейс. Если да, то настраиваем модуль. private function setupModule(target:* ):void { if (target is IResultModule) { //Настройка модуля } } В некоторой ситуации получаем false и настройка модуля не происходит. С типом target'а все впорядке. Данную часть кода переписал, не в лучшую сторону в плане красоты... но работает. Но в следующем куске кода не проходит проверка на реализацию другого интерфейса, реализованного самим модулем: Очень мутное поведение flash'а... не знаю уже куда смотреть. Может кто сталкивался с похожей проблемой? |
|
|||||
|
Все просто. Смотреть надо в сторону ApplicationDomain.
Грузить нужно флешку в тот же домен, что и у подгружающей вот выдрал пример кода из своей флешки, в которой происходит то же самое. Тут с loadBytes, но смысл тот же var byteArray:ByteArray = data as ByteArray; // тут у меня URLLoader'ом грузится swf и полученный байт массив уже Loader'ом загружается var loader:Loader= new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderCompele); if (Security.sandboxType == Security.REMOTE) { var context:LoaderContext = new LoaderContext(); context.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain); loader.loadBytes(byteArray, context); } else { loader.loadBytes(byteArray); } |
|
|||||
|
Регистрация: Oct 2012
Сообщений: 14
|
caseyryan, в моём коде ApplicationDomain.currentDomain = null. Сдается мне что это не нормально. Не подскажете как можно это поправить?
Добавлено через 42 минуты Дело несомненно в applicationDomain! После задания загрузчику модулей applicationDomain ={ new ApplicationDomain(ApplicationDomain.currentDomain) } // там все null Осталось придумать что и как положить в ApplicationDomain.. |
|
|||||
|
Код который я привел точно рабочий. loadBytes можно заменить на load() но суть от этого не поменяется.
У меня с мопощью этого кода грузятся в игру персонажи, которые применяют интерфейс, имеющийся в самой игре. Если Аппликейшн домен не указать то при проверке e.target.content is IMovable вылетит false. Если указать - true. Почему у вас null мне не понятно. Надо глянуть хотя бы на минимальный пример того, что там и как происходит |
|
|||||
|
Регистрация: Oct 2012
Сообщений: 14
|
caseyryan, работает все следующим образом:
Запускается главный модуль приложения, из меню выбираем нужную вещицу. Загружается модуль этой вещицы. В некоторых модулях есть записи для просмотра которых нужно подгрузить модуль для данной записи. Проблема в том что если в двух "больших" модулях, для просмотра записей одинакового типа загрузить модули(сначала в первом "большом" открываем запись, затем во втором), то первый отработает на ура а во втором возникнет проблема с проверками на реализацию интерфейсов... но если тут же открыть запись другого типа, тем самым подгрузив её модуль все отработает на ура. Для загрузки модулей используется стандартный Module Loader обернутый во ViewStack и NavigatorContent. В обёртке есть: В главном модуле при инициализации: в crossdomain.xml : <?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" />
</cross-domain-policy>
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:53. |
|
|
« Предыдущая тема | Следующая тема » |
|
|