加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

filter与cacheAsBitmap的关系

发布时间:2020-12-15 06:42:17 所属栏目:百科 来源:网络整理
导读:阅读了 iiley ?老大的blog文章,http://www.rgenerat.org/iileyblog/?p=62。 当你对一个display object 使用滤镜,会造成舞台显示上的问题。原则上display object 不会作为位图来显示,这样没有问题。但是一旦对它加了滤镜。自动将cacheasBitmap=false修改为

阅读了iiley?老大的blog文章,http://www.rgenerat.org/iileyblog/?p=62。

当你对一个display object 使用滤镜,会造成舞台显示上的问题。原则上display object 不会作为位图来显示,这样没有问题。但是一旦对它加了滤镜。自动将cacheasBitmap=false修改为 true,然后使用位图来显示原来的对象。这样你设置原来的对象visible=false,是执行了这个语句。但是舞台上的位图残象根本不会同时消失。除非别的事件对其影响。而且这个位图的单位是1*1象素。

cacheAsBitmap(属性)
cacheAsBitmap:Boolean 逻辑变量,可读写的。
如果设为true,flash player 缓存一个内部的bitmap来代替显示对象。这样可以增强包含复杂矢量内容的显示对象。一个显示对象里所有的矢量数据包含缓存位图来替代主显示对象。然后位图复制到主显示对象里。
cacheAsBitmap最适用于包含大量静态内容,并不需要频繁scale和旋转的MC里。
当你添加filter到display object上,cacheAsBitmap自动设置为true,这点即使你强行让cacheAsBitmap=false也改变不了。只有当你去掉filter,cacheAsBitmap将返回最新被设置的逻辑值。

测试代码如下:
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]; circle.cacheAsBitmap=false; trace(circle.cacheAsBitmap); // true circle.filters =null; trace(circle.cacheAsBitmap); // false

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读