Apache flex 将使用flex 4 SDK编译的flex模块加载到使用flex 3.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

我正在为一个需要Flex4功能的应用程序开发一个功能。由于应用程序从Flex 3.5迁移到4.0存在一些问题,我决定将此功能作为使用Flex 4.0编译的模块来实现。理论上,应用程序将保持在Flex3.5中编译,并在需要时加载模块

以下是模块加载代码:

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。您的编译模块版本必须等于或小于主应用程序的编译版本。