AS3--滤镜
滤镜是一些位图的效果,可以用于任何显示对象。在flashIDE中可以使用滤镜面板或使用
时间轴的ActionScipt来使用滤镜。在AS3中包括以下几种滤镜:
Drop shadow(投影滤镜)
Blur(模糊滤镜)
Glow(发光滤镜)
Belver(斜角滤镜)
Gradient belvel(渐变斜角滤镜)
Gradient glow(渐变发光滤镜)
Color matrix(颜色矩阵滤镜)
Convolution(卷积滤镜)
Displacement map(置换图滤镜)
1.创建滤镜:
?????? 首先要导入filters.*(例如要使用BlurFilter滤镜就要写入如下代码:import flash .filters.BlurFilter)
????? 其次创建滤镜实例:
var blur:BlurFilter = new BlurFilter(5,5,3);
??? 2. 应用滤镜:使用滤镜时,需要创建一个数组,将我们创建的滤镜实例粘在上面,再将
这个数组赋给显示对象的filters属性即可,代码如下:
??? var blur:BlurFilter = new BlurFilter(5,5,3);
??? var myFilters:Array = new Array();
?? silters.push(blur);
??? sprite.filters = myFilters;
【sprite是一个显示对象】
3.参数说明:
filters中的BlurFilters是模糊滤镜,三个参数如下所示:
blurX:Number (default = 4.0) — 水平模糊量。 有效值为 0 到 255.0(浮点值)。?
?
blurY:Number (default = 4.0) — 垂直模糊量。 有效值为 0 到 255.0(浮点值)。?
quality:int (default = 1) — 应用滤镜的次数。 您可以使用 BitmapFilterQuality 常数来指定品质。
4.滤镜实例:
实例说明:本实例首先绘制了一个带边框的黄色矩形,让矩形作为显示对象,对它使用
模糊滤镜,效果见附件;
AS3程序(文档类)如下:
package {
import flash.display.Sprite;
import flash.filters.BlurFilter;
public class Filter extends Sprite {
? public function Filter() {
?? init();
? }
? ////////绘制一个带蓝色边框,填充色为黄色的矩形
? private function init() {
?? var sprite:Sprite = new Sprite();
?? sprite.graphics.lineStyle(4,0x0000ff);
?? sprite.graphics.beginFill(0xffff00);
?? sprite.graphics.drawRect(150,150,230,200);
?? sprite.graphics.endFill();
?? addChild(sprite);
?? /////创建滤镜实例及其使用滤镜的方法
?? var blur:BlurFilter = new BlurFilter(5,5,3);
?? var myFilters:Array = new Array();
?? myFilters.push(blur);
?? sprite.filters = myFilters;
?? /////在创建数组的同时把滤镜放进去,并应用filter属性,这样一来,Flash会很高兴
?? ///写法如下:sprite.filter = [new BlurFilter(5,5,3)];
? }
}
}
创建一个动态的投影滤镜实例,实现:矩形的投影随着鼠标和矩形的相对距离和角度而变
化====动态滤镜:
as3文档类AnimatedFilter:
package {
import flash.display.Sprite;
import flash.filters.DropShadowFilter;
import flash.events.Event;
public class AnimatedFilter extends Sprite {
? private var filter:DropShadowFilter;
? private var sprite:Sprite;
?
public function AnimatedFilter() {
?? init();
? }
private function init() {
?? ///绘制一个矩形,然后引用滤镜DropShadowFilter
sprite = new Sprite();
?? sprite.graphics.lineStyle(2,0x00ffff);
?? sprite.graphics.beginFill(0xffff00);
?? sprite.graphics.drawRect(-50,-50,200,200);
?? sprite.graphics.endFill();
?? sprite.x=250;
?? sprite.y=250;
?? addChild(sprite);
?? filter=new DropShadowFilter(0,0,0,1,20,20,30);??
addEventListener(Event.ENTER_FRAME,onEnterFrameFunc);
? }
? private function onEnterFrameFunc(event:Event) {
///?? 计算鼠标和矩形的相对距离distance,缩小十倍将其做为滤镜投影的偏移量
////鼠标和矩形的相对夹角作为投影的投影角度
var dx:Number = mouseX - sprite.x;
var dy:Number = mouseY - sprite.y;
filter.distance= - Math.sqrt(dx * dx+dy * dy)/10;
filter.angle=Math.atan2(dx,dy) * 180/Math.PI;
sprite.filters = [filter];
? }
}
}