(转)flash位图缓存cacheAsBitmap
矢量圖,是靠 cpu運算出來的。而位圖記錄的顏色信息都保存在了內存中。把矢量圖緩存成位圖,以減輕cpu的運算壓力。
?
?
cacheAsBitmap 屬性? ?
cacheAsBitmap:Boolean??[讀寫]
語言版本:??ActionScript 3.0
運行時版本:??AIR 1.0, Flash Player 9
如果設置為 true,則 Flash Player 將緩存顯示對象的內部位圖表示形式。此緩存可以提高包含復雜矢量內容的顯示對象的性能。
具有已緩存位圖的顯示對象的所有矢量數據都將被繪制到位圖而不是主顯示。 然后,將位圖作為貼緊到最接近像素邊界的未拉伸、未旋轉的像素復制到主顯示。 像素按一對一與父對象進行映射。 如果位圖的邊界發生更改,則將重新創建位圖而不會拉伸它。
除非將 cacheAsBitmap 屬性設置為 true,否則不會創建內部位圖。
將 cacheAsBitmap 屬性設置為 true 后,呈現并不更改,但是,顯示對象將自動執行像素貼緊。 動畫速度可能會大大加快,具體取決于矢量內容的復雜性。
只要對顯示對象(當其 filter 數組不為空時)應用濾鏡,cacheAsBitmap 屬性就自動設置為 true,而且如果對顯示對象應用了濾鏡,即使將該屬性設置為 false,也會將該顯示對象的 cacheAsBitmap 報告為 true。 如果清除顯示對象的所有濾鏡,則 cacheAsBitmap 設置將更改為它上次的設置。
在下面的情況下,即使將 cacheAsBitmap 屬性設置為 true,顯示對象也不使用位圖,而是從矢量數據呈現:
位圖過大:在任一方向上大于 2880 像素。
位圖無法分配(內存不足錯誤)。
最好將 cacheAsBitmap 屬性與主要具有靜態內容且不頻繁縮放和旋轉的影片剪輯一起使用。 對于這樣的影片剪輯,在轉換影片剪輯時(更改其 x 和 y 位置時),cacheAsBitmap 可以提高性能。
=================================================================================
例程說明:
/**
?? ? * 為包含復雜的矢量圖形(例如文本或漸變)的動畫對象打開位圖緩存可提高性能。但是,如果在顯示對象(如播放其時間軸的
?? ?影片剪輯)中啟用了位圖緩存,您將獲得相反的效果。在各個幀上, Flash Player 必須更新緩存的位圖,然后在屏幕上重繪該
?? ?位圖,這一過程要求許多 CPU 周期。僅當緩存的位圖可以一次生成,且隨后無需更新即可使用時,才適合使用位圖緩存功能。
?? ?????? 為 Sprite 對象打開位圖緩存后,移動該對象不會使 Flash Player 重新生成緩存的位圖。更改對象的 x 和 y 屬性不會導致重新生
?? ?成。然而,任何試圖旋轉、縮放對象或更改其 alpha 值的行為都將導致 Flash Player 重新生成緩存的位圖,從而降低性能。
?? ?注: AIR 或 Packager for iPhone Preview 中提供的 DisplayObject.cacheAsBitmapMatrix 屬性沒有此限制。通過使用
?? ?cacheAsBitmapMatrix 屬性,可以在不重新生成任何位圖的情況下旋轉或縮放對象。此屬性可確保使用 GPU 在屏幕上呈現位
?? ?圖,從而提供性能改進。
?? ???? 緩存位圖占用的內存大于常規影片剪輯實例。例如,如果舞臺上的影片剪輯為 250 x 250 像素,緩存它可能會使用 250 KB 內
?? ?存,而未緩存它只需 1 KB。
?? ? * 1.對于只改變x,y時 沒有緩存fps=12左右;慢慢增高應該是因為有些mc跑到stage外面了
?? ? * 2.對于只改變x,y時 有緩存fps=30左右
?? ? * 3.對于只改變scaleX,sacleY時 無緩存fps=10,慢慢降低
?? ??? 4.對于只改變scaleX,sacleY時 有緩存fps=3左右
?? ? */
例子:
cacheasbitmap的實例影響.rar
轉載于:https://www.cnblogs.com/wonderKK/archive/2013/02/01/2888895.html
總結
以上是生活随笔為你收集整理的(转)flash位图缓存cacheAsBitmap的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VS 2012 如何发布 ASP.NET
- 下一篇: [译] Facebook杯2013年编程