快取顯示物件Flash Player 9 以及更新的版本,Adobe AIR 1.0 以及更新的版本 不論您正在建立的是應用程式還是以指令碼建立的複雜動畫,當 Flash 中的設計程式愈來愈龐大時,就必須同時考慮到效能和最佳化的問題。當您有內容保持為靜態 (如矩形 Shape 實體) 時,Flash Player 和 AIR 不會將內容最佳化,因此,當您變更矩形的位置時,Flash Player 或 AIR 便會重新繪製整個 Shape 實體。 您可以快取指定的顯示物件,以改善 SWF 檔的效能。顯示物件是「表面」,基本上是實體之向量資料的點陣圖版本,這些是您不想要在 SWF 檔的處理過程中變更太多的資料。因此,開啟了快取的實體並不是隨著 SWF 檔播放連續重新繪製,而是讓 SWF 檔快速呈現。 備註: 您可以在重新建立表面時更新向量資料。因此,表面中快取的向量資料不需要與整個 SWF 檔相同。
將顯示物件的 cacheAsBitmap 屬性設定為 true 可讓顯示物件快取本身的點陣圖形式。Flash Player 或 AIR 會建立該實體的表面物件,這是一個快取點陣圖而非向量資料。如果您變更顯示物件的範圍,則會重新建立表面,而非重新調整表面的大小。表面可以巢狀結構出現在其它表面中。子表面會複製其點陣圖至其父表面上。如需詳細資訊,請參閱啟用點陣圖快取。 DisplayObject 類別的 opaqueBackground 屬性和 scrollRect 屬性是與使用 cacheAsBitmap 屬性快取的點陣圖相關。雖然這三個屬性彼此獨立,但當物件快取為點陣圖時,opaqueBackground 和 scrollRect 屬性運作最順暢,只有在將 cacheAsBitmap 設定為 true 時,才會看到 opaqueBackground 和 scrollRect 屬性的效能優點。如需有關捲動顯示物件內容的詳細資訊,請參閱左右移動和捲動顯示物件。如需有關設定不透明背景的詳細資訊,請參閱設定不透明背景顏色。 如需有關 Alpha 色版遮色片 (必須將 cacheAsBitmap 屬性設定為 true) 的詳細資訊,請參閱遮蓋顯示物件。 啟用快取的時機啟用顯示物件的快取會建立表面,這會有幾項好處,例如幫助複雜的向量動畫更快速呈現。多數情況下,您都會想啟用快取,而且可能會想要一直啟用快取來改善 SWF 檔的效能,但是在某些情況下,啟用快取並不能改善效能,有的情況甚至會降低效能。本節會說明在哪些情況下應該使用快取,哪些情況下則使用一般的顯示物件即可。 快取資料的整體效能是依據實體向量資料的複雜程度、變更的資料多寡,以及是否設定 opaqueBackground 屬性而定。如果您只變更小區域,則使用表面和使用向量資料的差異不大。在您部署應用程式之前,可以先測試這兩種情況。 使用點陣圖快取的時機以下是在啟用點陣圖快取時,會產生明顯優勢的典型狀況:
在上述的情況中啟用點陣圖快取,都可以藉由最佳化向量圖形,改善應用程式的回應和互動品質。 此外,只要將濾鏡套用至顯示物件,即使明確將 cacheAsBitmap 設定為 false,它也會自動設定為 true。如果您將顯示物件的所有濾鏡都清除,cacheAsBitmap 屬性就會還原為上一次的設定。 避免使用點陣圖快取的時機在錯誤的情況下使用此功能,可能會對 SWF 檔案的效能造成負面的影響。使用點陣圖快取時,請切記下列原則:
啟用點陣圖快取若要啟用顯示物件的點陣圖快取,請將其 cacheAsBitmap 屬性設定為 true: mySprite.cacheAsBitmap = true; 將 cacheAsBitmap 屬性設定為 true 之後,您可能會發現顯示物件會以像素為座標值,自動對齊整個座標。當您測試 SWF 檔時,應該會注意到任何動畫在複雜的向量影像上會呈現得更快。 如果發生下列其中一或多種情況,即使將 cacheAsBitmap 設為 true,也不會建立表面 (快取的點陣圖):
|
|