Chinaunix首页 | 论坛 | 博客
  • 博客访问: 146868
  • 博文数量: 24
  • 博客积分: 3000
  • 博客等级: 中校
  • 技术积分: 320
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-21 10:48
文章分类

全部博文(24)

文章存档

2008年(24)

我的朋友
最近访客

分类: 系统运维

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的时候,需要使用很多代码来实现,现在很方便了。

虑镜的具体信息,以及其他的功能强大的虑镜,请参考adobeAS3在线文档。

大部分虑镜类构造器中都用到了下面的参数,这些参数的属性都是一样的,在这里先整理出来。

blurX:水平偏移量

blurY:垂直偏移量

quality:质量。可用BitmapFilterQuality.LOW, BitmapFilterQuality.MEDIUM, BitmapFilterQuality.HIGH,或者115的数字。数字越高,质量越高。

type:斜角定位类型。可用BitmapFilterType.INNER, BitmapFilterType.OUTER, BitmapFilterType.FULL

strength:浓度(0255

knockout:是否消除本体。如果设置为< span lang="EN-US">true,则原图形将被一个白色的区域代替

hideObject:是否隐藏本体。如果设置为< span lang="EN-US">true,则原图形将透明。

BevelFilter斜角虑镜

1.jpg

构造:

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:高亮透明度(01

shadowColor:阴影颜色

shadowAlpha:阴影透明度(01

BlurFilter柔边虑镜

2.jpg

构造:

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]

最后,将这个点阵用新得到的颜色值代替。

数组中的每一个值的取值范围是-255255。越低,表示这个颜色值的比重越重。

本人对颜色取值等没有研究也没有经验。因此不能确定此虑镜的效果和技巧。

DropShadowFilter投影虑镜

3.jpg

构造:

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发光虑镜

4.jpg

构造:

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)

参数都比较简单,不做说明。
阅读(1027) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~