我正在尝试使用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的大小是几个100K的大。这不是我想要的。
我并不完全理解运行时共享库的概念,但似乎通过将它们静态链接的选项设置为true,这些库包含在.swf中。但是,我喜欢将它们从.swf中排除,并且只在运行时加载所需的库,因为我的项目似乎与Flex3有关(顺便说一下我不知道)。
如果我理解正确的话,playerglobal.swc应该包含我的.swf必须加载的外部库的所有必要代码。 Flex4编译的文件需要更多的库吗?我应该在Frame元数据标签中对factoryClass做些什么吗?
我认为我的问题可以归结为:我如何编译一个与之前的Flex3编译的.swf大小相同的Flex4 .swf?
答案 0 :(得分:5)
您必须将[Frame(factoryClass="path.to.your.preloader")]
添加到主类(您在编译器选项中设置的类)。
答案 1 :(得分:1)
Flex3默认情况下不使用rsls,但您可以启用它们。默认情况下启用Flex4 rsls,请参阅:http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7add.html
运行时共享库的概念是:拆分其他应用程序(重新)使用的应用程序的一部分,从而只需要用户下载一次。这不会在第一次下载时保存任何内容,但会在以后的下载中保存。你可以创建自己的rsl,但它主要是adobe提供的那些意味着有所不同:由于'everybody'将使用它们,你需要的库有可能已经存在于用户的系统上,从而加快应用程序的下载时间。
playerglobal.swc从未包含任何flex框架类,其中大部分都在flex.swc和framework.swc中(标准的flex 3项目还包括rpc.swc和utilities.swc - 我没有检查但是这些可能包含一些弹性部件也是如此)
答案 2 :(得分:1)
看起来您可能遇到项目迁移问题。您可能希望阅读以下过程:
http://www.adobe.com/devnet/flex/articles/flexbuilder3_to_flashbuilder4.html
这是一篇非常好的文章,概述了迁移的不同可能性,具体取决于您要使用的Flex4内容的数量。