cacheAsBitmap 属性
cacheAsBitmap:Boolean []
语言版本 : ActionScript 3.0
RuntimeVersions: AIR 1.0, Flash Player 9
如果设置为 true,则 Flash Player 或 Adobe AIR 将缓存显示对象的内部位图表示形式。此缓存可以提高包含复杂矢量内容的显示对象的性能。
具有已缓存位图的显示对象的所有矢量数据都将被绘制到位图而不是主显示。然后,将位图作为贴紧到最接近像素边界的未拉伸、未旋转的像素复制到主显示。像素按一对一与父对象进行映射。如果位图的边界发生更改,则将重新创建位图而不会拉伸它。
除非将 cacheAsBitmap 属性设置为 true,否则不会创建内部位图。
将 cacheAsBitmap 属性设置为 true 后,呈现并不更改,但是,显示对象将自动执行像素贴紧。动画速度可能会大大加快,具体取决于矢量内容的复杂性。
只要对显示对象(当其 filter 数组不为空时)应用滤镜,cacheAsBitmap 属性就自动设置为 true,而且如果对显示对象应用了滤镜,即使将该属性设置为 false,也会将该显示对象的 cacheAsBitmap 报告为 true。如果清除显示对象的所有滤镜,则 cacheAsBitmap 设置将更改为它上次的设置。
在下面的情况下,即使将 cacheAsBitmap 属性设置为 true,显示对象也不使用位图,而是从矢量数据呈现:
位图过大:在任一方向上大于 2880 像素。
位图无法分配(内存不足错误)。
最好将 cacheAsBitmap 属性与主要具有静态内容且不频繁缩放和旋转的影片剪辑一起使用。对于这样的影片剪辑,在转换影片剪辑时(更改其 x 和 y 位置时),cacheAsBitmap 可以提高性能。
实现
public function get cacheAsBitmap():Boolean
public function set cacheAsBitmap(value:Boolean):void
另请参见
opaqueBackground
示例
下例将投影应用于 Shape 实例。然后,它将跟踪 cacheAsBitmap 属性的值,该值在应用滤镜时设置为 true:
import flash.display.Sprite;
import flash.filters.DropShadowFilter
var circle:Sprite = new Sprite();
circle.graphics.beginFill(0xAA0022);
circle.graphics.drawCircle(40, 40, 40);
addChild(circle);
trace(circle.cacheAsBitmap); // false
var filter:DropShadowFilter = new DropShadowFilter();
circle.filters = [filter];
trace(circle.cacheAsBitmap); // true
+_+ 一般的应用应该用不上这个吧 +_+!
http://www.actionscript3.cn/magicianzrh/archives/2008/10/cacheasbitmap.html
http://www.bytearray.org/?p=290
上面的那两个例子据说前者不用cacheAsBitmap会更慢,后者才用的实现方式不一样,属于特殊情况。这个话题先搁这里了,以后遇到类似的问题再研究了