濾鏡與動態點陣圖取消載入

避免使用濾鏡,包括透過 Pixel Bender 所處理的濾鏡。

請盡量不要使用類似濾鏡的效果,包括透過 Pixel Bender 在行動裝置中處理的濾鏡。將濾鏡套用至顯示物件時,執行階段會在記憶體中建立兩個點陣圖。每個點陣圖的大小就是顯示物件的大小。第一個是建立成點陣化版本的顯示物件,這個物件會用來產生套用濾鏡的第二個點陣圖:

檢視完整大小的圖形
套用濾鏡時記憶體中的兩個點陣圖

修改其中一個濾鏡屬性時,會在記憶體中同時更新兩個點陣圖以建立產生的點陣圖。這個程序需要一些 CPU 處理,而且兩個點陣圖可能都使用大量的記憶體。

Flash Player 10.1 與 AIR 2.5 在所有平台引進新的濾鏡行為。如果在 30 秒之內未修改濾鏡,或者如果它是隱藏的或在螢幕外,則會釋放未套用濾鏡的點陣圖所使用的記憶體。

這項功能可在所有的平台上,節省二分之一濾鏡使用的記憶體。例如,假設有一個套用模糊濾鏡的文字物件。在此情況下,文字未經修改且僅用於簡單的裝飾。在 30 秒之後,會釋放記憶體中未套用濾鏡的點陣圖。如果文字已隱藏 30 秒或不在螢幕上,則會產生相同的結果。修改其中一個濾鏡屬性時,會在記憶體中重新建立未套用濾鏡的點陣圖。這個功能稱為動態點陣圖取消載入。即使執行了這些最佳化,還是必須謹慎使用濾境。修改濾境時,仍需大量的 CPU 或 GPU 處理。

最好的作法是,盡可能使用透過編寫工具 (例如 Adobe® Photoshop®) 建立的點陣圖來模擬濾鏡。避免使用在 ActionScript 執行階段中建立的動態點陣圖。使用外部編寫的點陣圖可協助執行階段降低 CPU 或 GPU 負載,特別是當濾境屬性不隨著時間變更的情況下。盡可能使用編寫工具在點陣圖上建立您所需要的任何效果。如此一來,您稍後就可以在執行階段中顯示該點陣圖,而不需要對點陣圖執行任何處理,這樣速度會快上許多。