2011-03-14 67 views
0

我已經創建了一個完整的光譜色輪Sprite對象,它由1440個矢量三角形組成,或者如果您願意的話。動作腳本 - 位圖緩存與圖像資產性能

因爲我想動畫色輪,我已經激活了顯示對象的cacheAsBitmap屬性。然而,將矢量緩存爲位圖並不會增加動畫的性能 - 它仍然很慢,很刺激。

將無損壓縮的色輪的PNG屏幕截圖導入到庫中,將其轉換爲Sprite,並在動畫過程中旋轉此新圖像資源。

爲什麼一個未壓縮的PNG圖像資產導出出來執行相同的矢量圖像與cacheAsBitmap屬性設置爲true?

回答

6

因爲每次旋轉對象時,都必須重新計算一個新的位圖。

cacheAsBitmap僅適用於正在翻譯,未旋轉的對象;從docs

將cacheAsBitmap屬性最好與主要具有 靜態內容不擴展 ,經常旋轉的影片剪輯使用 。使用這樣的電影 剪輯,當電影 剪輯被翻譯時(當其x和y的 位置被改​​變時),cacheAsBitmap可導致 的性能增加。

這是因爲緩存的位圖是直接複製到顯示錶面(速度 - 這稱爲blitting)。每次渲染時對位圖應用轉換對於僅在一段時間內只旋轉一次的對象來說都是愚蠢的。僅在應用轉換時重新計算位圖是一種設計決策,它在最常見的情況下提高了性能,其中翻譯以外的轉換並不頻繁。

+3

@TheDarkIn 1978:不是直接的,但是您可以使用['draw']在代碼中拍攝對象一次快照(http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/ display/BitmapData.html#draw())將其寫入一個'BitmapData'對象,然後用它創建一個'Bitmap'對象,並使用該位圖對象而不是原始的基於矢量的對象。 – Cameron 2011-03-14 01:53:06

+0

感謝您的回答。他們澄清了我的一些誤解。 – TheDarkIn1978 2011-03-14 01:56:46

+0

@TheDarkIn 1978:沒問題:-)順便說一下,爲什麼你刪除了你的評論?這是一個很好的問題 – Cameron 2011-03-14 02:02:37