flash中的渐变滤镜GradientGlowFilter

可使用 GradientGlowFilter 类对显示对象应用渐变发光效果。 渐变发光是一种非常逼真的发光效果,您可以控制颜色渐变。 可以在对象的内缘或外缘的周围或者对象的顶部应用渐变发光。 您可以将滤镜应用于任何显示对象(即,从 DisplayObject 类继承的对象),例如 MovieClip、SimpleButton、TextField 和 Video 对象,以及 BitmapData 对象。

滤镜的具体使用取决于要应用滤镜的对象:

  • 要对显示对象应用滤镜,请使用 filters 属性。 设置对象的 filters 属性不会修改相应的对象,而清除 filters 属性可以删除相应的滤镜。
  • 若要对 BitmapData 对象应用滤镜,请使用 BitmapData.applyFilter() 方法。 对 BitmapData 对象调用 applyFilter() 会取得源 BitmapData 对象和滤镜对象,并最终生成一个过滤图像。

如果对显示对象应用滤镜,显示对象的 cacheAsBitmap 属性将设置为 true。 如果清除所有滤镜,将恢复 cacheAsBitmap 的原始值。

此滤镜支持舞台缩放。 但是,它不支持常规缩放、旋转和倾斜;如果对象本身进行了缩放(如果将 scaleXscaleY 设置为除 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 }
原文地址:https://www.cnblogs.com/hisiqi/p/2715922.html