2012-10-24 43 views
0

是否有任何可以說,讓A.swf只使用來自B.swf的某些項目,而不必首先加載整個swf作爲孩子?我想要做的就是儘可能精簡A,並且不時從B中抽出一些項目,而不必以某種方式將整個文件緩存在閃存中。我看過其他類似的問題,但似乎沒有人真正回答或適合這個確切的問題。AS3 - 僅從外部SWF加載某些項目/對象

在任何人問起之前,我確實知道如何使用loader,loadercontext以及從庫中創建類的實例。這更多的是一個方法論問題,而不是一個「如何」的問題。

只有我能想出的想法是將所有孩子導出爲單獨的swf對象,然後讓A請求B自己組成由A請求的分離項目。這樣做是否有效?

回答

0

我不認爲你可以做你想做的事情,但是因爲資產本質上是嚴格圖形的,所以將它們作爲單個資產導出並在需要時加載它們似乎並不是低效的。 (實際上它對我來說似乎非常有效...)

我還沒有嘗試過,但爲了節省時間,您可以使用jsfl自動執行導出過程。 (JSFL讓你的腳本的Flash IDE本身,對,否則你將不得不手動執行的任務自動化。)看看這個堆棧溢出答案在這裏:

Generating individual SWF's with classes from a fla with a large library

這個例子說明了如何批量出口的swf走出圖書館。

注意,在Flash CS6中,您可以通過右鍵單擊並選擇導出來從庫中導出MovieClip,但不幸的是,它不會讓您一次全部導出組。

+0

是的,我有CS5,它也有導出爲swf功能。不過,不知道批量導出工具。好吧,我想我會做什麼是創建它們後分別導出它們(具有適當的類名稱/鏈接),然後調用請求使用字符串查詢拆分到數組由定界符,最後加載它們每個使用getClassByName實例。然後,我可以創建一個包含所有單獨的笑臉實例的單個孩子,並將其返回給調用者。感謝大家的幫助!這兩個答案在這裏似乎是正確的,哈哈。 – dns

+0

糟糕我的意思是早些時候getDefinitionByName,而不是getClassByName。 – dns

0

A swf是一個編譯包,並不意味着被拆分成部分。一種解決方案是將AB中的所有公共元素拉到swc(編譯的Flash庫,不打算運行)。然後,您可以將swc包含在AB的彙編中。

除非您將創建大量僅包含少數常見元素的文件,否則我不明白爲什麼您需要將每個子文件導出爲單獨的swf文件。

+0

好的,我會更詳細地介紹一下我想要做的事情。我創建了一個聊天客戶端,它的最後一部分將是表情符號。我打算讓smilies處於一個單獨的文件中,因爲聊天客戶端不必將它們加載到自己的內部,以便保持客戶端本身的文件大小較低。 長期以來,表情符號將會變得生動活潑,並且將會出現大量的表情符號,所以我想繼續前進,從一開始就正確地構建它。表情符號也將被分層,這意味着多個可以被用作一次在彼此之上以組合差異組合。 – dns