![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Apr 2004
Адрес: город 312
Сообщений: 116
|
Ситуация:
Есть главное Flex приложение, которое грузит в себя swf-ки, которые могут быть и флешовыми и флексовскими. Написан интерфейс IModule для общения с подгруженными модулями. Во Flash интерфейс имплементируется в DocumentClass, во Flex имплементируется след. образом(вычитал из справки): <mx:Application implements="IModule" ... При загрузке модуля через moduleSwfLoader, при событии INIT делаю следующее: var module:IModule = moduleSwfLoader.content as IModule; ну и дальше идут вызовы методов... Трабл в следующем: если swf-ка собрана на Flash, то все замечательно работает. Однако в случае с Flex swf, не срабатывает приведение типов, и module становится null-овым. Есть идеи?
__________________
человек - переходная ступень от обезьяны к программисту |
|
|||||
|
Регистрация: May 2008
Сообщений: 6
|
Думаю надо указать: загружать модуль в ApplicationDomain.currentDomain.
Например, при загрузке модуля с помощью IModuleInfo это делается так. var partModuleInfo:IModuleInfo = ModuleManager.getModule("part.swf"); partModuleInfo.load(ApplicationDomain.currentDomain); или я просто не понял вопрос :P |
|
|||||
|
Регистрация: Apr 2004
Адрес: город 312
Сообщений: 116
|
прошу прощения за непонятную формулировку
я не использую Flex модули и при загрузке не использую ModuleManager модулями я называю обычные swf, сделанные на Flash AS3, или Flex и гружу их с помощью SWFLoader
__________________
человек - переходная ступень от обезьяны к программисту |
|
|||||
|
Регистрация: Jun 2005
Адрес: Санкт-Петербург
Сообщений: 159
|
почитай про SystemManager - тебе поможет.
__________________
F.U.C.K.I.N.P.U.N.K. |
|
|||||
|
Modus ponens
|
Угу, Application не является документ классом флексовой SWF, так что если loadedSWF as IModule == null -> Читаем тут:
/** * @private * If a class wants to be notified when the Application instance * has been initialized, then it registers a callback here. * By using a callback mechanism, we avoid adding unwanted * linker dependencies on classes like HistoryManager and DragManager. */ mx_internal static function registerInitCallback(initFunction:Function):void { if (!allSystemManagers || !lastSystemManager) { return; } var sm:SystemManager = lastSystemManager; // If this function is called late (after we're done invoking the // callback functions for the last time), then just invoke // the callback function immediately. if (sm.doneExecutingInitCallbacks) initFunction(sm); else sm.initCallbackFunctions.push(initFunction); } ![]() а так же: //---------------------------------- // application //---------------------------------- /** * The application parented by this SystemManager. * SystemManagers create an instance of an Application * even if they are loaded into another Application. * Thus, this may not match mx.core.Application.application * if the SWF has been loaded into another application. * <p>Note that this property is not typed as mx.core.Application * because of load-time performance considerations * but can be coerced into an mx.core.Application.</p> */ public function get application():IUIComponent { return IUIComponent(_document); }
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 11.01.2009 в 23:41. |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:49. |
|
|
« Предыдущая тема | Следующая тема » |
|
|