4

我正在尝试使用 Flex4 SDK 编译现有的 Flex3 项目。我收到此错误:

Warning: This compilation unit did not have a factoryClass specified in Frame metadata to load the configured runtime shared libraries. To compile without runtime shared libraries either set the -static-link-runtime-shared-libraries option to true or remove the -runtime-shared-libraries option.

生成的文件与我旧的 Flex3 编译的 .swf 文件大致相同。在 Flash Player 中播放生成的 .swf 文件也会出现以下错误:

An Actionscript error ocurred: VerifyError: Error #1014: Class spark.core::SpriteVisualElement could not be found

如果我将编译器属性设置static-link-runtime-shared-libraries为 true,那么错误就会消失,一切都很好。但是,生成的 .SWF 大小要大几倍。这不是我想要的。

我不完全理解运行时共享库​​的概念,但似乎将静态链接它们的选项设置为 true,这些库包含在 .swf 中。但是,我喜欢将它们从 .swf 中排除,并且只在运行时加载所需的库,因为我的项目似乎与 Flex3 相关(顺便说一下,我不知道)。

如果我理解正确,playerglobal.swc 应该包含我的 .swf 必须加载的外部库的所有必要代码。Flex4 编译文件是否需要更多库?我应该对 Frame 元数据标签中的 factoryClass 做些什么吗?

我想我的问题可以归结为:如何编译与之前的 Flex3 编译的 .swf 大小相同的 Flex4 .swf?

4

3 回答 3

5

您必须添加[Frame(factoryClass="path.to.your.preloader")]到主类(您在编译器选项中设置的那个)。

于 2010-11-25T14:09:12.340 回答
1

看起来您可能有项目迁移问题。您可能需要阅读以下流程:

http://www.adobe.com/devnet/flex/articles/flexbuilder3_to_flashbuilder4.html

这是一篇非常好的文章,概述了迁移的不同可能性,具体取决于您要使用的 Flex4 内容的数量。

于 2010-06-21T11:31:51.533 回答
1

Flex3 默认不使用 rsls,但您可以启用它们。Flex4 rsls 默认启用,请参阅:http ://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7add.html

运行时共享库​​的概念是:将应用程序的一部分(也被其他应用程序(重新)使用)拆分,从而只需要用户下载一次。这不会在第一次下载时保存任何内容,但会在以后的下载中保存。您可能会制作自己的 rsl,但主要是 adobe 提供的那些旨在有所作为:由于“每个人”都会使用它们,因此您需要的库很有可能已经存在于用户的系统上,因此加快应用程序的下载时间。

playerglobal.swc 从未包含任何 flex 框架类,它们中的大多数都在 flex.swc 和 framework.swc 中(标准的 flex 3 项目还包括 rpc.swc 和 utility.swc - 我没有检查,但这些可能包含一些 flex 部分以及)

于 2010-06-20T12:03:14.913 回答