Cargar módulos flexibles compilados con Flex 4 SDK en una aplicación compilada con Flex 3.5
flex3 module (1)
Es posible cargar módulos compilados en una versión diferente del SDK desde Flex 3.2, sin embargo, hay consideraciones de compatibilidad que debe tener en cuenta.
Se llama The Marshall Plan
, y puede leer más información al respecto aquí y aquí Esencialmente, la aplicación de host establece diferentes entornos limitados para los módulos, y la comunicación entre ellos es limitada (aunque todavía es muy posible).
Espero que ayude.
Estoy trabajando en una función para una aplicación que requiere funcionalidad Flex 4. Debido a algunos problemas de migración de la aplicación de Flex 3.5 a 4.0, he decidido implementar esta característica como un módulo que se compila con Flex 4.0. La teoría es que la aplicación se compilará en Flex 3.5 y cargará el módulo cuando lo necesite.
Aquí está el código de carga del módulo:
public function loadDiagModule():void {
var moduleLoader:ModuleLoader = new ModuleLoader();
moduleLoader.url = "module/DiagrammerModule.swf";
moduleLoader.loadModule();
moduleLoader.addEventListener(ModuleEvent.READY, onModuleReady);
}
protected function onModuleReady( moduleEvent:ModuleEvent ):void
{
var moduleInfo:IModuleInfo = moduleEvent.module;
var sample:IDiagrammerModule = moduleInfo.factory.create() as IDiagrammerModule;
Application.application.addChild(sample.testRender());
}
Desafortunadamente, encuentro un error de tiempo de ejecución cuando cargo el módulo en la aplicación:
VerifyError: Error #1014: Class mx.modules::ModuleBase could not be found.
at flash.display::MovieClip/nextFrame()
at mx.core::FlexModuleFactory/deferredNextFrame()[E:/dev/4.0.0/frameworks/projects/framework/src/mx/core/FlexModuleFactory.as:631]
at mx.core::FlexModuleFactory/update()[E:/dev/4.0.0/frameworks/projects/framework/src/mx/core/FlexModuleFactory.as:401]
at mx.core::FlexModuleFactory/moduleCompleteHandler()[E:/dev/4.0.0/frameworks/projects/framework/src/mx/core/FlexModuleFactory.as:718]
Sospecho que esto puede ser el resultado de una falta de coincidencia en la definición de clase de ModuleBase en Flex 3.5 y 4.0. ¿Hay algún tipo de cambio de configuración con mi aplicación y / o proyecto de módulo que remedie este error?
Aquí hay un poco de información sobre mi configuración: IDE: Flash Builder 4 plugin
Proyecto de aplicación
- SDK: Flex 3.5
- enlace de marco: fusionado en código
- Argumentos adicionales del compilador: -locale = en_US, ja_JP -source-path =. / Locale / {locale}
Proyecto de módulo
- SDK: Flex 4.0
- enlace de framework: use SDK por defecto (biblioteca compartida en tiempo de ejecución)
- Copie los archivos no incrustados al archivo de salida: true
- Generar archivo SWF accesible: verdadero
- Argumentos adicionales del compilador: -locale en_US