2011-08-08 71 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)。 –

相關問題