2010-06-20 66 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

相關問題