2010-06-20 70 views
4

我正在尝试使用Flex4 SDK编译现有的Flex3项目。我得到这个错误:使用Flex4 SDK进行编译

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做些什么?

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

+0

我不清楚如果你只是想编译flex3项目,或者你真的想包含一些新的/更新的flex4功能。另外:你是在命令行上编译还是使用flex builder/fdt? – 2010-06-20 12:11:24

+0

我需要首先重新编译Flex3项目,并可能稍后添加一些Flex4功能。但编写Flex3项目是我的首要任务。我在命令行上使用mxmlc进行编译。我的项目由多个.as文件组成。 – Monokai 2010-06-20 13:18:39

+0

我假设“path.to.your。预加载”标识某个类的吧?有没有Adobe公司已经为其中的共享库是在那里的主要瑞士法郎发现相同的地方被发现? – 2011-11-24 13:53:10

回答

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和utilities.swc - 我没有检查,但是这些可能还包含一些柔性部件)

+0

由于一般情况下写的任何一类,这有助于一点点了解它所有的。但是,如果我能够在FLEX4的RSL,为什么我仍然得到那些VerifyErrors?如果我理解正确的话,则应该RLS已经加载我的.swf开始之前,并不会有任何VerifyErrors。 – Monokai 2010-06-20 13:27:52

+0

警告告诉你为什么会出现验证错误:您没有工厂类来加载正确的rsls - 我的猜测是有一些命令行选项可以指定您要使用的rsls,该选项将负责生成正确的工厂类,将在运行时加载它们。 – 2010-06-20 21:52:50

+0

感谢一起思考。的RSL在Flex中-config.xml中指定的。我只用那些从Adobe。如果我能'静态链接,运行时共享libraries'在APP- config.xm l,那么我的应用程序编译得很好。所以这可能意味着RSLS被正确引用。错误只发生在我将'static-link-runtime-shared-libraries'设置为false编译时。这给出了factoryClass错误+ VerifyError。我还是不明白。我想我已经阅读了有关编译器选项的所有内容,但仍未找到解决方案。 – Monokai 2010-06-22 08:46:49

5

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

+1

我不知道你为什么没有被投票作为答案,这是完全正确的:) – Shane 2012-01-08 05:27:04

相关问题