flex cacheAsBitmap

 

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会更慢,后者才用的实现方式不一样,属于特殊情况。这个话题先搁这里了,以后遇到类似的问题再研究了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值