本文為看這篇文章之後的重點整理: http://www.adobe.com/devnet/flash/articles/efficiency-tips.html
這篇文章同時會對Flash開發程式師、動畫及美術有幫助。
提升效能
- 關掉沒有用到的物件的互動功能:
減少畫面中active的物件能有效的增加效能,下面這段CODE可以關閉掉MovieClip和其他物件的所有互動關係。mouseEnabled = false; mouseChildren = false;
- 判斷何時該用點陣圖(Bitmap)何時該用形狀(Shape):
使用Bitmap:當今天圖片有許多漸層、複雜圖案、顏色很多時,用Bitmap較好。
使用Shape:當今天的圖片是大塊色塊組成,感覺不利於縮放、但卻不需要縮放時,則使用Shape。(點陣圖按CTRL+B) - 將線段轉成色塊:線段所需要耗用的效能較多,因此可將不必要的線段轉換為填色。(在修改>形狀>將線段轉換成填色)
- 避免使用虛線或點線,因為此種線段很耗費效能。
- 避免使用圓角,圓角比起直角的處理上耗效能。
- 避免圖像的坐標坐落位置帶有小數點,因為小數點的運算比起整數會耗費更多效能。
向量圖形最佳化
- 減少圖形中的節點(按修改>圖像>最佳化),或使用平滑工具來減少節點。
- 避免使用漸層:漸層是非常耗效能的,若是必需要使用漸層,可在完成後,將其轉為Bitmap格式,或者以純色去取代。
- 不要使用不必要大小的bitmap圖片,或多餘的aplha值=0的透明色塊。因為這樣會增加所耗費的效能。
- 避免使用遮罩:使用遮罩時,每次進入下一個影格都會重新繪製並產生裡面的元件,因此會耗費大量的效能。所以我們要盡量避免使用遮罩功能,若真的有需要,可以改用程式裡的
scrollRect
功能來取代遮罩,這樣在實務上會省下許多的資源,缺點是只能做方形遮罩。
- 靜態物件避免使用濾鏡特效:因為濾鏡特效是每次重繪時都要重新計算一次特效顯示的值,若是今天是靜態物件要做濾鏡效果,可先在PHOTOSHOP內做好,便可節省濾鏡特效的運算時間。
- 將陰影效果的品質調低
- 假如圖片要resize,不要直接在flash裡改變圖片大小,而應該在外部先做好resize再loading進來。可以使用mipmapping 來計算圖片的最佳大小。
- 降低影格速度
- 避免MovieClip呈現槽狀結構
- 動畫目標物件可設置快取為點陣圖以節省效能,但此時要注意不要對該元件設置任何濾鏡,不然他每一個影格都會重新快取一次目標物件,這會耗費非常高的效能。
- 濾鏡特效的設定值設為2的指數(ex: 2 4 8 16….)
- 如果只是非常簡單的動畫(如單純的位移事件),可以用程式碼去替代(如TweenLite),會更高彈性且節省效能。
- 2.5D的CPU圖像模式的運算會很耗效能,此時可以用”快取為點陣圖”來製作2.5D的圖像。
- 觀察重繪區塊,去知道是那邊耗費較多的效能。(在FLASH DEBUG按右鍵=>顯示重繪區域),盡量讓重繪的區塊降到最低。
- 假如要設一個元件為不可視,記得停掉該元件,避免他在背後繼續執行(下stop)。
- 避免元件出現在可視範圍外,若是需要將元件移除或移入視線,可以使用
addChild()及
removeChild()
- 除非有需要做特殊的文字效果,否則不要使用TLF text Field。
最佳化檔案素材大小
- 選擇適當的圖像壓縮比、非必要時,避免勾選”平滑化”的選項。
- 考慮使用一整張的圖片或是用BITMAP填色:因為若顯示的區塊很小,但我們用一張超大張的圖片來做填色,這一大塊的圖片都會被包在SWF裡,因此若遇到這個狀況,可以用CTRL+B將點陣圖打散成形狀,將其縮小後,再將其轉回點陣圖,直接使用該圖片做為底色。
但假如現況是某一張小圖片,會重複的出現在眾多區塊做為底色,那這時後就推薦用以BITMAP來填滿區塊的方式。 - 盡量避免在畫面中RESIZE圖片的大小
- 假使是很單純、色塊及線條極少的狀況,可以將點陣圖轉為向量圖,這樣可以縮小SWF的體積。(修改>點陣圖>轉換為向量圖)
- 一格格的動畫改為移動漸變動畫(這樣是省空間,但會耗效能,所以要取決於現在你是需要效能或者空間,去決定該用那種作法)。
- 當個向量圖會在很多地方重覆出現時,將其轉換為SYMBOLS(圖像),這樣會可以在很多地方共用一個資源。
- 要嵌入字型時,只嵌入自己所需要的字碼範圍
- 可在發佈設定的地方建立專案的描述檔去觀察所有元件的大小(右顛齒輪可新增描述檔)
- 在發佈設定=>SWF=>進階的地方,把”包含XMP中繼資料”選項取消,可以減少一些檔案大小。