apache-flex - 将使用 Flex 4 SDK 编译的 Flex 模块加载到使用 Flex 3.5 编译的应用程序中

标签 apache-flex flex3 module flex4

我正在为需要 Flex 4 功能的应用程序开发一项功能。由于应用程序从 Flex 3.5 到 4.0 的一些迁移问题,我决定将此功能实现为使用 Flex 4.0 编译的模块。理论上,应用程序将保持在 Flex 3.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]

我怀疑这可能是 Flex 3.5 和 4.0 中 ModuleBase 类定义不匹配的结果。我的应用程序和/或模块项目是否有某种配置更改可以纠正此错误?

这是我的配置的一些信息: IDE:Flash Builder 4 插件

应用程序项目

  • SDK:Flex 3.5
  • 框架联动:合并到代码中
  • 其他编译器参数:-locale=en_US,ja_JP -source-path=./locale/{locale}

模块项目

  • SDK:Flex 4.0
  • 框架联动:使用SDK默认(运行时共享库​​)
  • 将非嵌入文件复制到输出文件:true
  • 生成可访问的 SWF 文件:true
  • 其他编译器参数:-locale en_US

最佳答案

自 Flex 3.2 起,可以加载在不同版本的 SDK 中编译的模块,但是您必须考虑兼容性注意事项。

这就是编码(marshal)计划,您可以阅读有关它的更多信息 herehere本质上,主机应用程序为模块建立了不同的沙箱,它们之间的通信是有限的(尽管仍然很有可能)。

希望有帮助。

关于apache-flex - 将使用 Flex 4 SDK 编译的 Flex 模块加载到使用 Flex 3.5 编译的应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4056686/

相关文章:

apache-flex - 如何在 ActionScript 中获取实例的 "memory location"?

xml - 始终在 FB 4.6 中获得 XML 响应

actionscript-3 - 如何为 Flex Mobile 中的某些 View 启用方向更改?

apache-flex - 刷新现有的 DataGrid ItemRenderers

function - 从不同的 lua 文件调用函数

linux - 如何修改现有的 Linux 内核模块

apache - 在 httpd.conf 中设置 IndexIgnore

apache-flex - 如何删除 BitmapData 对象中的区域?

javascript - 节点上带有换行文本的 Flex TreeView

macos - as3 scanHardware()函数使我的应用程序崩溃