cacheAsBitmap 的研究
private function backgroundDraw():void
{
this.mBackground.cacheAsBitmap = false;
var graphics:Graphics = this.mBackground.graphics;
graphics.clear();
graphics.beginFill(this.mBackgroundColor);
graphics.drawRect(0, 0, Dollars.smStage.stageWidth, Dollars.smStage.stageHeight);
graphics.endFill();
this.mBackground.cacheAsBitmap = true;
}
如果设置为 true
,则 Flash 运行时将缓存显示对象的内部位图表示形式。此缓存可以提高包含复杂矢量内容的显示对象的性能。
具有已缓存位图的显示对象的所有矢量数据都将被绘制到位图而不是主显示。如果 cacheAsBitmapMatrix
为空或不受支持,位图将作为与最近的像素边界对齐的未拉伸且未旋转的像素复制到主显示。像素按一对一与父对象进行映射。如果位图的边界发生更改,则将重新创建位图而不会拉伸它。
如果支持 cacheAsBitmapMatrix
,并且它为非空,则对象将使用该矩阵绘制到屏幕范围外的位图,并且使用该呈现的拉伸和/或旋转结果将对象绘制到主显示。
除非将 cacheAsBitmap
属性设置为 true
,否则不会创建内部位图。
将 cacheAsBitmap
属性设置为 true
后,呈现并不更改,但是,显示对象将自动执行像素贴紧。动画速度可能会大大加快,具体取决于矢量内容的复杂性。
只要对显示对象(当其 filter
数组不为空时)应用滤镜,cacheAsBitmap
属性就自动设置为 true
,而且如果对显示对象应用了滤镜,即使将该属性设置为 false
,也会将该显示对象的 cacheAsBitmap
报告为 true
。如果清除显示对象的所有滤镜,则 cacheAsBitmap
设置将更改为它上次的设置。
在下面的情况下,即使将 cacheAsBitmap
属性设置为 true
,显示对象也不使用位图,而是从矢量数据呈现:
- 位图过大。在 AIR 1.5 和 Flash Player 10 中,位图图像的最大宽度或高度为 8,191 像素,并且像素总数不能超过 16,777,215 像素。(因此,如果位图图像的宽度为 8,191 像素,则其高度只能为 2,048 像素。)在 Flash Player 9 及早期版本中,高度最大为 2880 像素,宽度最大为 2,880 像素。
- 位图无法分配(内存不足错误)。
最好将 cacheAsBitmap
属性与主要具有静态内容且不频繁缩放和旋转的影片剪辑一起使用。对于这样的影片剪辑,在转换影片剪辑时(更改其 x 和 y 位置时),cacheAsBitmap
可以提高性能。