我可以在此项目中使用基于flex4 SDK和库(swc文件)的应用程序,该应用程序基于另一个版本的flex(3.2)吗?
如何处理这种情况?
答案 0 :(得分:0)
理论上,Flex 3 SWC应该适用于所有Flex 3版本。 Flex 4 SWC应该适用于所有Flex 4版本。我不希望Flex 3 SWC能够对抗Flex 4,但它取决于SWC中的内容以及使用的类。
在实践中,奇怪的错误有时会突然出现。我强烈建议您针对与主项目一起使用的相同SDK编译所有SWC。通过确保您的版本匹配,可以解决许多奇怪的运行时和编译器错误。
这是一种让我惊讶的问题“尝试它不会比问问题更快”。你有特定的问题吗?
答案 1 :(得分:-1)
这样想:
您的Flex应用程序开始加载,并在UIComponent类中加载flashPlayer。当使用swc中的类(并且它们具有从Flex 3.2编译的UIComponent)时,flashPlayer使用首次初始化的swf中已经使用过的UIComponent,而不是编译到swc中的那个。
[嗯,这是简化的 - 这是编译器完成所有这些废话以减少swf大小...模块做同样的事情'。读取跨模块的applicationDomain内容 - 如果两个模块使用相同的类,并且首先加载一个,第二个(即使它具有该类的更新版本)将使用旧的,首次加载的类。]
最佳做法:不要使用swcs。如果可能,使用与用于编译的完全相同的sdk从源构建。
下一个最佳做法:使用不使用许多Flex类的swcs。 Swiz是一个很好的例子....他们引入了一些flex类,但如果你在项目中搜索“mx”。你会发现25个不会很快改变的类的结果--- IMXMLObject,FlexEvent和一些Binding类。如果你的swc使用ComboBox,那你就麻烦了。 (你有没有看到过去两年中ComboBox的bug发布? - 自3.2sdk以来,这件事发生的变化比我换衣服的时间多了很多次,而且每周至少发生过一次)。
我不会花很多时间在这个网站上,但我有兴趣知道你想要吸引哪些swc。它是开源的吗?
我希望有所帮助。 祝你好运, 杰里米