Apache flex 将使用flex 4 SDK编译的flex模块加载到使用flex 3.5编译的应用程序中
我正在为一个需要Flex4功能的应用程序开发一个功能。由于应用程序从Flex 3.5迁移到4.0存在一些问题,我决定将此功能作为使用Flex 4.0编译的模块来实现。理论上,应用程序将保持在Flex3.5中编译,并在需要时加载模块 以下是模块加载代码:Apache flex 将使用flex 4 SDK编译的flex模块加载到使用flex 3.5编译的应用程序中,apache-flex,flex3,module,flex4,Apache Flex,Flex3,Module,Flex4,我正在为一个需要Flex4功能的应用程序开发一个功能。由于应用程序从Flex 3.5迁移到4.0存在一些问题,我决定将此功能作为使用Flex 4.0编译的模块来实现。理论上,应用程序将保持在Flex3.5中编译,并在需要时加载模块 以下是模块加载代码: public function loadDiagModule():void { var moduleLoader:ModuleLoader = new ModuleLoader(); moduleLoader.url = "mod
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());
}
不幸的是,在应用程序中加载模块时遇到运行时错误:
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]
我怀疑这可能是Flex3.5和4.0中ModuleBase的类定义不匹配的结果。我的应用程序和/或模块项目是否有某种配置更改可以纠正此错误
以下是有关我的配置的一些信息:
IDE:FlashBuilder4插件
应用程序项目
- SDK:Flex3.5
- 框架链接:合并到代码中
- 其他编译器参数:-locale=en_-US,ja_-JP-源路径=./locale/{locale}
- SDK:Flex4.0
- 框架链接:使用SDK默认值(运行时共享库)
- 将非嵌入文件复制到输出文件:true
- 生成可访问的SWF文件:true
- 其他编译器参数:-locale en_US
在SDK的不同版本中编译的加载模块是可能的,因为Flex 3.2,但是有兼容性考虑必须考虑。
它被称为马歇尔计划(Marshall Plan),您可以阅读有关它的更多信息,基本上主机应用程序为模块建立了不同的沙盒,并且模块之间的通信是有限的(尽管仍然非常可能)希望这能有所帮助。当我将模块改为扩展模块而不是ModuleBase时,我得到了以下错误:VerifyError:error#1053:diag#u DiagrammerModule_mx_core_FlexModuleFactory中callInContext的非法重写。如果您的主应用程序是用3.5编译的,那么您可以使用的最大版本是3.5。您的编译模块版本必须等于或小于主应用程序的编译版本。