[AS3]as3滤镜用法示例与说明(模糊滤镜,投影滤镜)(2)
(一)如何创建并应用滤镜
首先,我们在舞台上绘制一个红色长方形。然后填入以下代码:
var myDisplayObject = this.getChildAt(0); //获取舞台显示对象
var filter:DropShadowFilter = new DropShadowFilter(); //创建滤镜
var filtersArray:Array = new Array(filter); //建立滤镜数组
myDisplayObject.filters = filtersArray; //应用滤镜
大家可以看到,filters接受的是一个滤镜数组。如果对显示对象应用了多个滤镜,则会按照顺序,依次累积。
(二)如何修改和删除滤镜
修改滤镜时,可以重新创建滤镜数组,然后赋值给filters属性。但是不可直接在filters属性上进行数组操作。比如:
(1) 用这种方法是正确的
filtersArray.push(new BlurFilter());
myDisplayObject.filters = filtersArray;
(2) 用这种方法是错误的
myDisplayObject.filters.push(new BlurFilter());
大家请比较一下两者的区别。
删除滤镜只需要给filters属性赋值null即可,如下:
myDisplayObject.filters = null;
(三)滤镜的工作原理
滤镜是通过把原始对象的副本缓存为透明位图来工作的。当你对显示对象启用滤镜时,不管当前显示对象的cacheAsBitmap值是多少,都会自动转换成true。当删除所有滤镜后,才会恢复原来的值。
既然如此,使用滤镜后,那些位图缓存的优点都会保留,而缺点同样会保留。所以我们使用滤镜时,占用内存会变大。并且要尽可能的避免对显示对象做很复杂的动画,这样对性能会有比较大的影响。
使用滤镜时,还有两点需要注意:第一点、滤镜区域是不能做重叠判断或者点击判断的。比如对一个影片剪辑做了斜角滤镜,那么在斜角部分,重叠判断和点击判断都是无效的(影片剪辑的原始区域自然是有效的)。第二点,滤镜是不支持缩放、旋转和倾斜的。所以对滤镜的本身进行这些变化时(也要尽量避免),滤镜是不会跟着变化的。
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例