可使用 GradientGlowFilter 类对显示对象应用渐变发光效果。 渐变发光是一种非常逼真的发光效果,您可以控制颜色渐变。 可以在对象的内缘或外缘的周围或者对象的顶部应用渐变发光。 您可以将滤镜应用于任何显示对象(即,从 DisplayObject 类继承的对象),例如 MovieClip、SimpleButton、TextField 和 Video 对象,以及 BitmapData 对象。
滤镜的具体使用取决于要应用滤镜的对象:
- 要对显示对象应用滤镜,请使用
filters
属性。 设置对象的filters
属性不会修改相应的对象,而清除filters
属性可以删除相应的滤镜。 - 若要对 BitmapData 对象应用滤镜,请使用
BitmapData.applyFilter()
方法。 对 BitmapData 对象调用applyFilter()
会取得源 BitmapData 对象和滤镜对象,并最终生成一个过滤图像。
如果对显示对象应用滤镜,显示对象的 cacheAsBitmap
属性将设置为 true
。 如果清除所有滤镜,将恢复 cacheAsBitmap
的原始值。
此滤镜支持舞台缩放。 但是,它不支持常规缩放、旋转和倾斜;如果对象本身进行了缩放(如果将 scaleX
和 scaleY
设置为除 1.0 以外的其它值),滤镜效果将不进行缩放。 只有用户在舞台上进行放大时它才会缩放。
GradientGlowFilter的构造函数:
public function GradientGlowFilter(distance:Number = 4.0, angle:Number = 45, colors:Array = null, alphas:Array = null, ratios:Array = null, blurX:Number = 4.0, blurY:Number = 4.0, strength:Number = 1, quality:int = 1, type:String = "inner", knockout:Boolean = false)
distance:Number
(default = 4.0
) — 光晕的偏移距离。
angle:Number
(default = 45
) — 角度,以度为单位。 有效值为 0 到 360。
colors:Array
(default = null
) — 定义渐变的颜色数组。 例如,红色为 0xFF0000,蓝色为 0x0000FF 等等。
alphas:Array
(default = null
) —
colors
数组中对应颜色的 Alpha 透明度值的数组。 数组中每个元素的有效值为 0 到 1。 例如,值 .25 将 Alpha 透明度值设置为 25%。
ratios:Array
(default = null
) — 颜色分布比例的数组。 有效值为 0 到 255。 该值定义颜色采样率为 100% 之处的宽度百分比。
blurX:Number
(default = 4.0
) — 水平模糊量。 有效值为 0 到 255。 如果模糊量小于或等于 1,则表明原始图像是按原样复制的。 2 的乘方值(如 2、4、8、16 和 32)经过优化,呈现速度比其它值更快。
blurY:Number
(default = 4.0
) — 垂直模糊量。 有效值为 0 到 255。 如果模糊量小于或等于 1,则表明原始图像是按原样复制的。 2 的乘方值(如 2、4、8、16 和 32)经过优化,呈现速度比其它值更快。
strength:Number
(default = 1
) — 印记或跨页的强度。 该值越高,压印的颜色越深,而且发光与背景之间的对比度也越强。 有效值为 0 到 255。 值越大,压印越强。 值为 0 意味着未应用滤镜。
quality:int
(default = 1
) — 应用滤镜的次数。 使用 BitmapFilterQuality 常数:
type:String
(default = "inner
") — 滤镜效果的放置。 可能的值是 flash.filters.BitmapFilterType 常数:
knockout:Boolean
(default = false
) — 指定对象是否具有挖空效果。 应用挖空效果将使对象的填充变为透明,并显示文档的背景颜色。 值为
true
将指定应用挖空效果;默认值为 false
,即不应用挖空效果。
例子:
1 package { 2 import flash.display.Sprite; 3 import flash.filters.BitmapFilter; 4 import flash.filters.BitmapFilterQuality; 5 import flash.filters.BitmapFilterType; 6 import flash.filters.GradientBevelFilter; 7 8 public class GradientBevelFilterExample extends Sprite { 9 private var bgColor:uint = 0xCCffCC; 10 private var size:uint = 400; 11 private var offset:uint = 50; 12 13 //设置偏移距离,和angleInDegree一起使用,60表示偏移的距离大小 14 private var distance:Number = 60; 15 //设置偏移方向,270表示向正方向偏移 16 private var angleInDegree:Number = 270; 17 //设置用于渐变的颜色的集合 18 private var colors:Array = [0xFF0000, 0xFF0000, 0xff0000, 0xff0000,0xFFffff]; 19 //通过透明度的递减来实现渐变效果,和颜色对应 20 private var alphas:Array = [0.6, 0.4, 0.3, 0.2,0.1]; 21 private var ratios:Array = [0,150,185, 220, 255]; 22 //该属性控制在X方向渐变的范围 23 private var blurX:Number = 300; 24 //该属性控制在Y方向起作用的渐变范围 25 private var blurY:Number = 200; 26 //改属性控制颜色的区分度 27 private var strength:Number = 1; 28 private var quality:Number = BitmapFilterQuality.HIGH; 29 //改属性控制渐变扩散的方向,向内还是向外,还是既内又外 30 private var type:String = BitmapFilterType.INNER; 31 private var knockout:Boolean = true; 32 33 public function GradientBevelFilterExample() { 34 draw(); 35 var filter:BitmapFilter = getBitmapFilter(); 36 var myFilters:Array = new Array(); 37 myFilters.push(filter); 38 filters = myFilters; 39 } 40 41 42 private function getBitmapFilter():BitmapFilter { 43 return new GradientBevelFilter(distance, 44 angleInDegree, 45 colors, 46 alphas, 47 ratios, 48 blurX, 49 blurY, 50 strength, 51 quality, 52 type, 53 knockout); 54 } 55 56 private function draw():void { 57 graphics.beginFill(bgColor); 58 graphics.drawRect(offset, offset, size, size); 59 graphics.endFill(); 60 } 61 } 62 }