分类: 系统运维
2008-03-07 15:29:54
使用filters的方法比较简单。先用代码来说明。
第一步:现创建一个显示对象,这里创建一个Shape:
var s:Shape = new Shape();
s.graphics.beginFill(0xFFCC00);
s.graphics.drawRect(50, 50, 80, 80);
s.graphics.endFill();
this.addChild(s);
第二步:然后创建一个filter效果:
var color:Number = 0;
var alpha:Number = 1;
var blurX:Number = 10;
var blurY:Number = 10;
var strength:Number = 2;
var inner:Boolean = false;
var knockout:Boolean = false;
var quality:Number = BitmapFilterQuality.HIGH;
var newFilter: BitmapFilter = new GlowFilter(color, alpha, blurX, blurY, strength, quality, inner, knockout);
这里创建的是一个Glow,发光虑镜。AS3支持的虑镜和参数在后面说明。
第三步,把这个虑镜加到显示对象上:
var myFilters:Array = new Array();
myFilters.push(newFilter);
s.filters = myFilters;
注意,这里要创建一个数组来放所有的虑镜。因为一个显示对象可以拥有多个虑镜。
整个过程就这样简单的完成了。下面介绍一些在AS3中可以用到的虑镜。下面的中文名称都是我直接翻译的名称,因为我对虑镜不熟悉。每个虑镜的图,是根据类构造的默认值生成的,可以看出这种虑镜的大致效果。
这里介绍的只是AS3中的一部分虑镜,因为这几种虑镜我用得比较多,所以整理出来了。这些效果以前在 AS2的时候,需要使用很多代码来实现,现在很方便了。
虑镜的具体信息,以及其他的功能强大的虑镜,请参考adobe的AS3在线文档。
大部分虑镜类构造器中都用到了下面的参数,这些参数的属性都是一样的,在这里先整理出来。
blurX:水平偏移量
blurY:垂直偏移量
quality:质量。可用BitmapFilterQuality.LOW, BitmapFilterQuality.MEDIUM, BitmapFilterQuality.HIGH,或者1-15的数字。数字越高,质量越高。
type:斜角定位类型。可用BitmapFilterType.INNER, BitmapFilterType.OUTER, BitmapFilterType.FULL,
strength:浓度(0-255)
knockout:是否消除本体。如果设置为< span lang="EN-US">true,则原图形将被一个白色的区域代替
hideObject:是否隐藏本体。如果设置为< span lang="EN-US">true,则原图形将透明。
BevelFilter斜角虑镜
构造:
BevelFilter(
distance:Number = 4.0,
angle:Number = 45,
highlightColor:uint = 0xFFFFFF,
highlightAlpha:Number = 1.0,
shadowColor:uint = 0×000000,
shadowAlpha:Number = 1.0,
blurX:Number = 4.0,
blurY:Number = 4.0,
strength:Number = 1,
quality:int = 1,
type:String = “inner”,
knockout:Boolean = false)
参数说明:
distance:斜角的偏移量
angle:斜角的角度
highlightColor:高亮颜色
highlightAlpha:高亮透明度(0-1)
shadowColor:阴影颜色
shadowAlpha:阴影透明度(0-1)
BlurFilter柔边虑镜
构造:
BlurFilter(
blurX:Number = 4.0,
blurY:Number = 4.0,
quality:int = 1)
ColorMatrixFilter颜色虑镜
(没有演示图片)
ColorMatrixFilter(matrix:Array = null)
参数说明:
这个虑镜使用一个4×5的矩阵数组作为参数。4×5的矩阵并不是指二位数组,这里用的是有20个项的一维数组。
这个数组的作用步骤如下:
首先,在图形中的每一个点阵,可以分解成四个值,srcR(红),srcG(绿),srcB(蓝),srcA(透明度)。
然后,用矩阵中的数据,可以算出四个新的值,运算公式如下:
redResult = (a[0] * srcR) + (a[1] * srcG) + (a[2] * srcB) + (a[3] * srcA) + a[4]
greenResult = (a[5] * srcR) + (a[6] * srcG) + (a[7] * srcB) + (a[8] * srcA) + a[9]
blueResult = (a[10] * srcR) + (a[11] * srcG) + (a[12] * srcB) + (a[13] * srcA) + a[14]
alphaResult = (a[15] * srcR) + (a[16] * srcG) + (a[17] * srcB) + (a[18] * srcA) + a[19]
最后,将这个点阵用新得到的颜色值代替。
数组中的每一个值的取值范围是-255到255。越低,表示这个颜色值的比重越重。
本人对颜色取值等没有研究也没有经验。因此不能确定此虑镜的效果和技巧。
DropShadowFilter投影虑镜
构造:
DropShadowFilter(
distance:Number = 4.0,
angle:Number = 45,
color:uint = 0,
alpha:Number = 1.0,
blurX:Number = 4.0,
blurY:Number = 4.0,
strength:Number = 1.0,
quality:int = 1,
inner:Boolean = false,
knockout:Boolean = false,
hideObject:Boolean = false)
参数说明:
inner:是否是内角投影
GlowFitler发光虑镜
构造:
GlowFilter(
color:uint = 0xFF0000,
alpha:Number = 1.0,
blurX:Number = 6.0,
blurY:Number = 6.0,
strength:Number = 2,
quality:int = 1,
inner:Boolean = false,
knockout:Boolean = false)
参数都比较简单,不做说明。