2011-08-08 53 views
3

我为我的项目制作了运行时共享库​​,我们称之为ResourceLibrary。它包含我项目的所有嵌入式资源(图像,声音,影片剪辑),并且在许多其他代码位中用作单例。尝试使用运行时共享库​​时出现“错误#1014:类mx.core :: BitmapAsset”

我使用这个批处理(不幸的是Windows)中编译它:

SET normalstuff=--namespace+=http://ns.adobe.com/mxml/2009,${flexlib}/mxml-2009-manifest.xml --namespace+=http://www.adobe.com/2006/mxml,${flexlib}/mxml-manifest.xml --namespace+=library://ns.adobe.com/flex/spark,${flexlib}/spark-manifest.xml -external-library-path lib -external-library-path+=${flexlib}/libs -external-library-path+=${flexlib}/libs/player/10.0 
call compc -source-path src/ -output lib-ext/resources.swc -include-namespaces+=http://MYPROJECT -namespace+=http://MYPROJECT,confs/ResourceLibrary-manifest.xml %normalstuff% -library-path+=data/characters -library-path+=data/menus -library-path+=data/icons/relationships -include-lookup-only=true 

这让我resources.swc文件,该文件,当我包括我的图书馆这个SWC并有-static链接运行时共享库 = true。但我不想将我的运行时共享库​​嵌入到我的主swf中(将文件大小从10mb减小到〜3mb),因此static-link-runtime-shared-libraries必须是false。

当我运行我的代码,但是,我得到这个错误:

[Starting debug session with FDB] 
[Fault] exception, information=VerifyError: Error #1014: Class mx.core::BitmapAsset could not be found. 

我已经扒了我的大脑在这个可能超简单的解决方案,但我到处寻找答案在其他人获取的是“静-link-runtime-shared-libraries to true“。

任何人都有从哪里开始的线索/想法?

回答

1

我想通了这一点,但忘了在这里发表。

你必须做的是告诉它在哪里使用将位于SWF,什么班会在它(SWC ARG)

-runtime-shared-library-path=lib/MyLibrary.swc,MyLibrary.swf 

然后我提取SWC(使用7zip的,但任何作品),并将提取的swf重命名为“MyLibrary.swf”,并将其移至与我的主程序相同的目录中。

+0

谢谢!我一直在用MXMLC编译模块时遇到问题 - 编译器不会将ModuleBase类嵌入到需要它的那些类中。最终,最终的解决方案来自于确保每个模块都使用'-static-link-runtime-shared-libraries = true'编译,并为每个模块指定每个RSL及其路径。 –

0

如果您使用的SDK与您正在使用的Flash Builder版本不匹配,则可能需要在项目属性中手动链接到该SDK。

+0

我该如何检查?我使用的是FlashDevelop 3.3.4 RTM,我的Flex SDK是Flex SDK 4.1.0 在我的工具>程序设置> AS3Context中,我将“Flex SDK位置”设置为“C:\ bin \ Flex SDK 4.1.0”(这是我安装它的地方)。 Flex一直很好,直到这个RSL的东西 – Zambini

+0

我不确定。我不使用FlashDevelop for Flex - 它不是Flex开发工具的好工具,特别是现在在FB 4.5中提高了生产力。我可以说的是你的图书馆项目也需要链接到SDK。我认为你的问题很可能是你的主要项目知道正确的SDK,而不是库项目。检查您的FD文档,了解如何解决此问题。 –

0

你知道创建一个swc 不是一个RSL,对不对? swc =编译时间库。 swf =运行时库(或swz,如果它是Adobe签名的库)。

http://livedocs.adobe.com/flex/3/html/help.html?content=rsl_01.html#168690 http://livedocs.adobe.com/flex/3/html/help.html?content=compilers_14.html

+0

是的,但是我告诉它swc(找到RSL中的类)和提取的swf(从swc中)。 至少这就是AS3文档告诉我的。 – Zambini

+0

[本教程](http://www.flexer.info/2008/01/08/how-to-create-a-swf-rsl-from-a-swc-and-how-to-use-it/ )告诉你如何从一个swc创建一个自定义的RSL。从这里开始,您需要在创建swf时指定rsl-url(mxmlc中的runtime-shared-libraries rsl-url)。 –

相关问题