2010-01-26 25 views
3

我正在研究分解成許多獨立的swfs的大型應用程序。有一個加載導航外殼和基礎邏輯的主swf,以及一個將子swfs加載到主顯示區域的模塊加載系統。這一切都運行順利,現在我正在構建模塊,並且我開始覺得我的方法不像應該那樣高效。如何優化模塊化Flash應用程序(加載時間和靈活性)?

模塊swfs(和相應的flas)位於主項目的src文件夾的「modules」子目錄中。這些模塊共享大量的類。事實上,大多數他們沒有定義特定於該模塊的新類。共享類具有複雜的繼承和接口使用結構,位於主src文件夾的view/structure子目錄中。

目前,爲了在模塊swfs中使用view/structure中的共享類,我將主項目的src文件夾添加到每個模塊flas的源路徑中。除了每次都有點乏味之外,它還會1.)將共享類冗餘地編譯到每個模塊中,從而增加文件的大小,2)需要爲每個希望工作的開發人員添加新的源代碼路徑,測試應用程序,因爲它們是絕對值,並且在每個os的文件系統上都不相同,以及3.)不允許在不訪問主項目src文件夾的情況下獨立構建模塊

我對RSL中的一些閃光燈,但我不明白我將如何適應他們到這個計劃。

任何想法?非常感謝您的閱讀。

-Dane

+0

聽起來很複雜。我想知道,如果你有你的主要模塊類(抽象模塊的類別其他所有東西繼承或實現方法),它會適合你編譯爲一個SWC並使用它的樣子嗎?每次你編譯時,只有新的代碼應該被編譯,因爲swc已經被編譯過了。這將是1)。... 2)每個開發者更新它的swc,在libs文件夾中可能是相對路徑。 3.)如果他們被迫實現和接口,或者擴展一個在保護方法中需要最少實現的類,應該沒問題。 – 2010-01-26 23:55:47

+0

SWF始終嘗試儘可能獨立。即使沒有複雜的依賴關係,項目集合中的每個項目也會趨於膨脹。 RSL是答案,見Theo的解釋。 – Ipsquiggle 2010-01-27 16:32:18

回答

2

在這種情況下我強烈建議使用運行時共享庫​​。我從來沒有直接從Flash IDE完成它,因爲我總是通過Flex進行編譯,但我想它應該與Flash IDE幾乎相同的邏輯,但您可能需要稍微調整下面的解決方案,雖然我正在編寫它從頭到尾沒有經過測試...

包括所有主要的類,通過在代碼中以某種方式引用它們來共享(編譯器包括類,懶惰的方式和非引用的類將不會被包含和導出)。

爲確保共享類的一致性,請發佈所使用類的SWC(在發佈設置中勾選「導出SWC」)。您可以隨時通過解壓縮SWC的內容。

在加載的模塊中,從「源路徑」/「庫路徑」中刪除類路徑。相反,將新創建的SWC添加到「外部庫路徑」列表中。 當您現在導出模塊時,在SWC中找到的類將不會包含在SWF中。

注意:當您從主SWF外部導出/運行模塊時,您可能會收到運行時錯誤(「定義未找到...」)。這是有道理的,因爲你提取的定義是來自主SWF。

+0

+1 ..在我看來,Dane所描述的情景恰恰就是RSL有價值的情況。 – Ipsquiggle 2010-01-27 16:30:03

+0

謝謝,這聽起來像我正在尋找的答案。 – Dane 2010-01-27 17:33:59