【问题标题】:Flex SKD's main project and external SWC'sFlex SKD 的主要项目和外部 SWC 的
【发布时间】:2010-12-14 11:24:47
【问题描述】:

我可以在这个项目中拥有一个基于 flex4 SDK 的应用程序和一个基于另一个版本的 flex (3.2) 的库(swc 文件)吗?

flex 将如何处理这种情况?

【问题讨论】:

  • afaik 它应该是兼容的

标签: flex3 flex4 apache-flex


【解决方案1】:

理论上,Flex 3 SWC 应该适用于所有 Flex 3 点版本。 Flex 4 SWC 应该适用于所有 Flex 4 点版本。我不希望 Flex 3 SWC 能够与 Flex 4 兼容,但这取决于 SWC 中的内容以及使用的类。

在实践中,有时确实会出现奇怪的错误。我强烈建议针对您在主项目中使用的同一个 SDK 编译您的所有 SWC。通过确保您的版本匹配,可以解决许多奇怪的运行时和编译器错误。

这种类型的问题让我想知道“尝试它会不会比提出问题更快。”你有具体的问题吗?

【讨论】:

  • 我做到了,它坏了,这就是为什么我的问题涉及到事物的理论。假设您有只能与 flex3 SDK 一起使用的遗留代码(假设是巨大的,我的意思是巨大的)。现在,您有一个项目需要将此代码用作库。您可以针对 flex3 编译 lib 并针对 flex4 编译项目吗?当然......你可以,众所周知,问题是,在幕后,运行时是否与这个组合项目“行为”相同?还有一件事,如果你从外部加载 lib 而不是在项目中编译,那会怎样?
【解决方案2】:

这样想:

您的 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。它是开源的吗?

我希望这会有所帮助。 祝你好运, 杰里米

【讨论】:

  • 谢谢。这实际上也是我的逻辑告诉我的,但我想要验证。
  • 我认为这个答案有点不准确。 SWF 中的类在编译时优化,而不是在运行时优化。尽管可以将一个 UIComponent 编译到 SWC 中,但同一 UIComponent 不会编译到 SWF 中(忽略 Flex 框架的 RSL)。我强烈反对不使用 SWC 是最佳实践的建议,因此为 -1。尽管存在版本问题,但它们解决了重要需求,并且是项目之间重用的合适工具。
  • 重新评论您的评论:“在编译时,而不是运行时。”如果你阅读了我的整篇文章,你会发现我解决我的不准确描述的方式比你的要酷得多,杰夫:“是编译器做了所有这些废话来减少 swf 大小......”如果你我会“非常不同意”,我猜你从来没有与编译过几十个 swcs 的 Maven 配置作斗争。作为开发人员,你的目标应该是多工作一个小时来设置您的项目,在更改您的 flex sdk 版本时,您的工作时间不应超过四分钟。
  • 我宁愿以后不必通过拥有源来进行升级支持。我们只需为提供源代码的图书馆项目支付 10,000 美元以上。如果提供者只会提供 swc,那么他就是在让他的客户工作太努力,而不是在乎他的客户。或者,也许您从来不需要支持具有旧版本 AutoCompleteCombobox swc 的项目,并且不得不花费超过 30 分钟来引入扩展类 (mx.controls.form.ComboBox) 的 swc,该类在不同版本的sdk。或者你可以接受浪费 30 多分钟?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多