2011-04-13 28 views
0

我正在嘗試爲約10個相關資產設置生產環境。視覺和其他方面的某些要素將在這10個資產之間共享。我在Flash Builder 4中將每個項目都視爲自己的Pure AS3項目。在Flex庫項目中使用.swc

每個資產都有一個關聯的.fla,它將一個.swc輸出到該資源的libs文件夾中 - 最終編譯將完成通過ant,頂級源代碼是每個Flash Builder項目中的主要.as文件。

由於某些元素是在多個資產之間共享的,因此我在工作區中創建了一個Flex庫項目。這個庫項目有一個帶有標準結構的/ src文件夾,以及一個我堅持使用的/ lib /文件夾,例如,greensock的TweenLite。

除了源代碼和第三方.swc,庫項目還有一個FLA,它將.swc導出到/ lib /文件夾中。

下面是問題:我無法在我的相關項目中看到.swc的庫導出。理論上,我從Flex庫項目的.fla庫中導出的每個類都應該編譯到庫項目的.swc中。我發現情況並非如此,我不清楚爲什麼。

我打算繼續挖掘,但我想把它放在這裏,以防其他人遇到這些問題。任何人都知道我在做什麼錯了?

編輯:顯然,我的綠色的.swc沒有被編譯到最終的輸出。昨天是。我不確定發生了什麼變化。我想我的問題是蒸餾下來的:我如何確保包含在我的Flex庫項目的構建路徑中的.swc文件的所有類都包含在FLP生成的最終.swc中?

編輯2:我發現了一種可怕的解決方法。現在我在我的src文件夾中創建了一個類,並且我聲明瞭任何我想從我的.swc中包含的任何內容 - 例如,public var tweenLite:TweenLite,public var logo:Logo等。我發現如果我在其中一個源文件中聲明它,那麼我可以在相關項目中訪問它。僅僅導入它是不夠的 - 這意味着我將不得不手動聲明我想要訪問的每個類。一定會有更好的辦法。我錯過了什麼?

+0

什麼樣的鏈接類型被設定爲在庫項目屬性您的SWC'Flex庫構建路徑>庫Path'標籤?它是否被合併到代碼中? – Constantiner 2011-04-13 14:38:18

+0

是的。我剛剛想出了一個解決方法,即將更新我的文章 - 但它仍然是一個PITA。但是,是的,「合併到代碼」目前被選中。另一個選項「使用默認(外部)」已被選中 - 它無法正確使用。 – Myk 2011-04-13 14:48:15

+1

順便說一句,你是對的,導入指令不包括導入類到編譯。但是你不必包含(聲明)所有來自swc的類。如果所有的類都耦合在一起,那麼你可以只聲明鏈中相互引用的主類。你可以使用更簡單的語法來鏈接類,而不是聲明每一個類:'private static var linking:Array = [Class1,Class2];' – Constantiner 2011-04-13 15:33:46

回答

1

我遇到了一些問題,我們從SDK swc 1獲得A類,從SDK swc 2獲得B類(blendMode錯誤結果),最後我們必須保證所有的依賴關係都是用特定版本的SDK編譯(也不好玩)。我想這聽起來像是你想要一個包含新庫所依賴的其他庫的源的庫。

基本上每個swc都是一個目錄文件,ActionScript(AS)文件的ActionScript Bytecode(ABC)壓縮成一個zip文件,因此您希望它將這兩個部分合併到一個swc中。

使用運行時共享庫​​(RSL)意味着在編譯期間不從swc中提取字節碼並將其包含在swf中,而是在運行時加載swc(在以此方式打包時調用swz)。缺點是它將所有類存儲到swz中,而不是在編譯時只需要拉取所需AS的字節碼。因此,通過RSL進行鏈接應該可以得到您想要的結果,但您必須從庫中生成swz文件。你可能仍然不得不做一些荒謬的事情,比如在swz中引用你想要的所有東西(來自其他swcs),但我相信你應該能夠通過某種方式來解決這個問題......我繼續四處尋找更好的解決方案,並編輯,如果我找到一個:

http://tv.adobe.com/watch/adc-presents/creating-runtime-shared-libraries/

編輯1:

也發現了這個:

通過compc -source路徑。 ./mycomponents/components/local -include類CustomCellRendererComponent -directory =真 -debug =假 -output ../libraries/CustomCellRenderer

從這個頁面:

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

在這個一對夫婦的想法也因爲我一直在四處尋找,1這將是可怕的低效在空間上,因此所有的工作只包括你正在使用的類,2如果使用上面的方法我可能會寫一個java應用程序,它將遍歷所有類名的項目文件夾,所以我可以讓它生成項目空間中所有類的列表。

謝謝你聽出我的想法(仍然是WIP :),

肖恩

+0

謝謝Shaun,聽起來你在正確的軌道上。今天下午我會回到這裏,所以我們會看到它給我帶來了什麼! – Myk 2011-04-14 14:03:31

相關問題