【发布时间】:2010-12-14 11:24:47
【问题描述】:
我可以在这个项目中拥有一个基于 flex4 SDK 的应用程序和一个基于另一个版本的 flex (3.2) 的库(swc 文件)吗?
flex 将如何处理这种情况?
【问题讨论】:
-
afaik 它应该是兼容的
标签: flex3 flex4 apache-flex
我可以在这个项目中拥有一个基于 flex4 SDK 的应用程序和一个基于另一个版本的 flex (3.2) 的库(swc 文件)吗?
flex 将如何处理这种情况?
【问题讨论】:
标签: flex3 flex4 apache-flex
理论上,Flex 3 SWC 应该适用于所有 Flex 3 点版本。 Flex 4 SWC 应该适用于所有 Flex 4 点版本。我不希望 Flex 3 SWC 能够与 Flex 4 兼容,但这取决于 SWC 中的内容以及使用的类。
在实践中,有时确实会出现奇怪的错误。我强烈建议针对您在主项目中使用的同一个 SDK 编译您的所有 SWC。通过确保您的版本匹配,可以解决许多奇怪的运行时和编译器错误。
这种类型的问题让我想知道“尝试它会不会比提出问题更快。”你有具体的问题吗?
【讨论】:
这样想:
您的 Flex 应用程序开始加载,并且 flashPlayer 在 UIComponent 类中加载。当使用 swc 中的类时(并且它们具有从 Flex 3.2 编译的 UIComponent),flashPlayer 使用第一次初始化的 swf 中已使用的 UIComponent,而不是编译到 swc 中的 UIComponent。
[嗯,这很简单——编译器做了所有这些废话来减少 swf 大小......模块做同样的事情。跨模块阅读 applicationDomain 的东西——如果两个模块使用同一个类并且首先加载一个,第二个(即使它具有该类的更新版本)将使用旧的、第一个加载的类。]
最佳实践:不要使用 swcs。如果可能,请使用与用于编译的完全相同的 sdk 从源代码构建。
下一个最佳实践:使用不使用许多 Flex 类的 swcs。 Swiz 就是一个很好的例子……他们引入了一些 flex 类,但是如果你在项目中搜索“mx”。你会发现 25 个类的结果不会很快改变 --- IMXMLObject、FlexEvent 和一些 Binding 类。如果您的 swc 使用 ComboBox,那么您就有麻烦了。 (在过去的两年中,您是否看到过 ComboBox 的错误发布?——自从 3.2sdk 以来,这件事发生的变化比我换衣服的次数还多,而且至少每周一次)。
我没有花很多时间在这个网站上,但我很想知道你想加入哪个 swc。它是开源的吗?
我希望这会有所帮助。 祝你好运, 杰里米
【讨论】: