2011-02-08 44 views
1

堆棧如何設置RSL(運行時共享庫​​)

我在設置一個新項目(電子學習)時遇到了一些麻煩,我認爲這將從RSL中受益。
我的情況是這樣的:

Main.fla - 一個Shell
Scenes.fla - 某種類型的GUI
的 - 我會在一分鐘內
Navigation.fla解釋 大量的FLA文件 - 教訓

主要將是第一部要實例化的電影,那麼從這裏開始所有必要的將是下載

每課將被放置在一個FLA/SWF除了「架構」(即主,場景,導航類一整束稱爲引擎),並在運行時添加內場景。

引擎負責處理重複性和必要的任務,事件,通用方法,與服務器的通信等等。

導航負責處理用戶輸入,如導航(next/prev課程等),然後將其傳遞給引擎,它將操縱場景(以及它的子節點)。

嗯,我也有一些限制:
每個交給我們客戶的swf文件都需要少於80kb,這意味着我被捆綁在一起。
我無法編譯整個東西作爲準備交付的包。

由於尺寸問題,我需要儘可能減輕負荷的方法。
所以,我搜索了很多這些天,發現RSL。
我創建了一些測試,以更好地瞭解如何使用它,當然,陷入了陷阱。

我還沒有能夠設置我的Flash正確,沒有任何與「庫路徑」(在AS3配置下)的成功,還沒有能夠編譯SWC內的類...

另一件事是我不會上課,只有架構。
這些課程將由可能不具備AS3(OOP或程序邏輯)知識的人員創建。
而且我並不傾向於將整個引擎(源代碼)交付給任何可能混淆它的人,使整個應用程序(應用程序,事實上,我們將產生數百個電子學習)。

我真的覺得我需要一些東西幫助(時鐘滴答作響):

如何使用RSL有效
如何捆綁SWC
內部類如何打包所有這些都是勢在必行的整件事情在SWC工作,然後,只發送這個SWC

我知道這個線程有點長,現在一週,並且無法管理設置。

感謝您的關注...
NemoStein

+0

我的理解是,SWCs不是RuntimeSharedLibraries,因爲你需要編譯SWCs。如果你想在運行時訪問,你將需要使用SWF – Daniel 2011-02-10 05:56:17

回答

1

有兩種方法可以從FLA

一個導出整個庫做到這一點。 轉到您的發佈設置只選擇Flash,然後選擇Export SWC下的閃光標籤

http://img593.imageshack.us/img593/8296/swc.png

另一種是就在你的庫中單擊一個項目,然後選擇導出SWC。如果您遇到有尺寸限制的物品時遇到問題,則可能需要繼續,但除此之外,我建議您導出整個圖書館

將鏈接標識添加到您的資產非常重要 您可以輸入此內容通過庫中的鏈接ID列或編輯符號屬性。

這些ID必須是唯一的,因爲這些是您將調用它們的類的名稱。創建一個通用前綴是一個好主意,所以它們不太可能干擾其他類。

http://img827.imageshack.us/img827/7820/linkageid.png

當你擁有資產編譯,你可以將它們添加到項目的運行時庫文件夾或將它們嵌入一個接一個通過設置或embed標籤。我使用FlashDevelop,它使得它很容易,不知道你正在使用什麼,但我確定這個選項在那裏,很容易訪問。


使用庫。

我一直在做的加載資產(swf在運行時) 爲什麼run-tim swfs?那麼,如果你正在爲內容編譯,你實在無法保持引擎的獨立。這個想法是,引擎首先被加載,然後加載配置,告訴它如何處理庫以及在哪裏找到每個庫。簡化

我的設置/裝束是這樣

我有哪裏庫添加一個默認的配置XML文件。對於我的目的,我知道預期的庫,所以我有像這樣的預編碼的XML標籤:

在代碼端我將庫的名稱/類型定義爲一個常量靜態,並將它們全部放入另一個常量這是一個數組。 在我的Data類中這樣的東西 const static var TYPE_COMPONENTS:String =「components」; const static var TYPE_INTERFACE:String =「interface」; const static var TYPES:Array = [TYPE_COMPONENTS,TYPE_INTERFACE];

一旦我得到了加載的confg xml,並且可以逐個瀏覽子節點並查看它們是否與我的TYPES數組下的任何項匹配。我把所有的匹配放在一個組加載器中(http://as3.casalib.org/docs/org_casalib_load_GroupLoad.html)我也把所有的資源放到一個字典數組中,這樣我就可以通過我定義的靜態變量(Data.TYPE_INTERFACE)

然後我等待加載完成。

一旦涉及到加載資產,我使用getLoader(Data.TYPE_INTERFACE)。 getDefinitionmyClassName)創建類

它有助於有hasDefinition檢查類exsits而不發出一個錯誤

你需要知道的類名是叫什麼,我用另一個XML文件定義要查找的類以及如何處理它們。

我手工生成XML文件,有時需要提醒自己選項是什麼,但可以創建一個可生成這些文件的AIR應用程序。因爲我使用swf作爲在pc上運行的引擎,所以無法像使用服務器端技術或AIR一樣查找子文件夾中存在的庫,因此XML是必需的。

希望這有助於

+0

謝謝丹尼爾,但我在測試中得到了很多。我的問題不是創建SWC,而是在運行時成功導入它。 – NemoStein 2011-02-09 11:43:12