1、Flash ActionScript 3.0 语言和组件参考(ShaderFilter)第 1 页 共 7 页包 flash.filters类 public class ShaderFilter继承 ShaderFilter BitmapFilter Object语言版本: ActionScript 3.0运行时版本: Flash Player 10, AIR 1.5ShaderFilter 类通过对应用了滤镜的对象执行着色器来应用滤镜。应用了滤镜的对象将用作着色器输入,而着色器输出将用作滤镜效果。 若要创建新的滤镜,请使用构造函数 new ShaderFilter()。滤镜的具体使用取决于要
2、应用滤镜的对象: 若要对影片剪辑、文本字段、按钮和视频应用滤镜,请使用 filters 属性(继承自 DisplayObject)。 设置对象的 filters 属性不会修改相应的对象,而清除 filters 属性可以删除相应的滤镜。 若要对 BitmapData 对象应用滤镜,请使用 BitmapData.applyFilter() 方法。 对 BitmapData 对象调用 applyFilter() 会取得源 BitmapData 对象和滤镜对象,并最终生成一个过滤图像。 如果对显示对象应用滤镜,则该对象的 cacheAsBitmap 属性值将设置为 true。如果删除所有滤镜,将恢复
3、cacheAsBitmap 的原始值。此滤镜支持舞台缩放。但是,它不支持常规缩放、旋转和倾斜。 如果对象本身进行了缩放(如果 scaleX 和 scaleY 属性未被设置为 100%),则滤镜不进行缩放。 只有用户在舞台上进行放大时它才会缩放。如果结果图像的宽度或高度超过 2880 像素,则不应用滤镜。 例如,如果您在放大某大型影片剪辑时使用了滤镜,则在结果图像超过 2880 像素的限制时,该滤镜将关闭。若要指定将 Shader 实例用于滤镜,请将 Shader 实例作为参数传递到 ShaderFilter() 构造函数,或将其设置为 shader 属性的值。若要允许着色器输出超出已过滤对象的
4、范围,请使用 leftExtension、rightExtension、topExtension 和 bottomExtension 属性。查看示例另请参见flash.display.DisplayObject.filtersflash.display.DisplayObject.cacheAsBitmapflash.display.BitmapData.applyFilter()flash.display.ShaderFlash ActionScript 3.0 语言和组件参考(ShaderFilter)第 2 页 共 7 页公共属性属性 定义方bottomExtension : int 目
5、标对象底部的增大量(以像素为单位)。 ShaderFilterconstructor : Object 对类对象或给定对象实例的构造函数的引用。 ObjectleftExtension : int 目标对象左侧的增大量(以像素为单位)。 ShaderFilterprototype : Object 静态 对类或函数对象的原型对象的引用。 ObjectrightExtension : int 目标对象右侧的增大量(以像素为单位)。 ShaderFiltershader : Shader 要为此滤镜使用的着色器。 ShaderFiltertopExtension : int 目标对象顶部的增大量(
6、以像素为单位)。 ShaderFilter公共方法 方法 定义方ShaderFilter(shader:Shader = null)创建新的着色器滤镜。 ShaderFilterclone():BitmapFilter返回 BitmapFilter 对象,它是与原始 BitmapFilter 对象完全相同的副本。BitmapFilterhasOwnProperty(name:String):Boolean指示对象是否已经定义了指定的属性。 ObjectisPrototypeOf(theClass:Object):Boolean指示 Object 类的实例是否在指定为参数的对象的原型链中。 Ob
7、jectpropertyIsEnumerable(name:String):Boolean指示指定的属性是否存在、是否可枚举。 ObjectsetPropertyIsEnumerable(name:String, isEnum:Boolean = true):void设置循环操作动态属性的可用性。ObjecttoString():String返回指定对象的字符串表示形式。 ObjectvalueOf():Object返回指定对象的原始值。 ObjectFlash ActionScript 3.0 语言和组件参考(ShaderFilter)第 3 页 共 7 页属性详细信息bottomExten
8、sion属性bottomExtension:int 读写 语言版本: ActionScript 3.0运行时版本: Flash Player 10, AIR 1.5目标对象底部的增大量(以像素为单位)。 该增大量是指超出目标对象范围并在执行着色器期间传递到该着色器的范围。在执行着色器时,Flash Player 将计算影片剪辑的正常范围,然后基于 leftExtension、rightExtension、topExtension 和 bottomExtension 值扩展该范围。默认值为 0实现 public function get bottomExtension():intpublic f
9、unction set bottomExtension(value:int):voidleftExtension属性 leftExtension:int 读写 语言版本: ActionScript 3.0运行时版本: Flash Player 10, AIR 1.5目标对象左侧的增大量(以像素为单位)。 该增大量是指超出目标对象范围并在执行着色器期间传递到该着色器的范围。在执行着色器时,Flash Player 将计算影片剪辑的正常范围,然后基于 leftExtension、rightExtension、topExtension 和 bottomExtension 值扩展该范围。默认值为 0实
10、现 public function get leftExtension():intpublic function set leftExtension(value:int):voidrightExtension属性 rightExtension:int 读写 语言版本: ActionScript 3.0运行时版本: Flash Player 10, AIR 1.5目标对象右侧的增大量(以像素为单位)。 Flash ActionScript 3.0 语言和组件参考(ShaderFilter)第 4 页 共 7 页该增大量是指超出目标对象范围并在执行着色器期间传递到该着色器的范围。在执行着色器时,F
11、lash Player 将计算影片剪辑的正常范围,然后基于 leftExtension、rightExtension、topExtension 和 bottomExtension 值扩展该范围。默认值为 0实现 public function get rightExtension():intpublic function set rightExtension(value:int):voidshader属性 shader:Shader 读写 语言版本: ActionScript 3.0运行时版本: Flash Player 10, AIR 1.5要为此滤镜使用的着色器。 分配给 shader 属
12、性的着色器必须指定至少一个 image4 输入。不需要使用关联 ShaderInput 对象的 input 属性在代码中指定输入。而将应用了滤镜的对象自动用作第一个输入(index 为 0 的输入)。用作滤镜的着色器可以指定多个输入,而在这种情况下,如果要指定任何其他输入,则必须设置其 ShaderInput 实例的 input 属性。如果为此属性分配一个 Shader 实例,则会在内部复制着色器,过滤操作将使用该内部副本,而不会引用原始着色器。对着色器所做的任何更改(例如更改参数值、输入或字节代码)不会应用到用于滤镜的着色器副本。若要使对着色器所做的更改能够影响滤镜输出,则必须将 Shade
13、r 实例重新分配给 shader 属性。实现 public function get shader():Shaderpublic function set shader(value:Shader):voidtopExtension属性 topExtension:int 读写 语言版本: ActionScript 3.0运行时版本: Flash Player 10, AIR 1.5目标对象顶部的增大量(以像素为单位)。 该增大量是指超出目标对象范围并在执行着色器期间传递到该着色器的范围。在执行着色器时,Flash Player 将计算影片剪辑的正常范围,然后基于 leftExtension、ri
14、ghtExtension、topExtension 和 bottomExtension 值扩展该范围。默认值为 0Flash ActionScript 3.0 语言和组件参考(ShaderFilter)第 5 页 共 7 页实现 public function get topExtension():intpublic function set topExtension(value:int):void构造函数详细信息ShaderFilter()构造函数public function ShaderFilter(shader:Shader = null) 语言版本: ActionScript 3.0
15、运行时版本: Flash Player 10, AIR 1.5创建新的着色器滤镜。 参数 shader:Shader (default = null) 要为此滤镜使用的着色器。有关详细信息以及着色器必须符合的限制,请参阅 shader 属性的说明。 另请参见 shader示例 如何使用示例 下面的示例中加载了一个着色器,并将其用作 ShaderFilter 的 shader 属性。代码在 Sprite 实例中绘制一个圆并将其添加到舞台。加载着色器时,会对该 Sprite 应用着色器滤镜。 请注意,此示例假定在与应用程序的输出目录相同的目录中存在一个名为“gradient.pbj”的着色器字节码
16、文件。/ Source code for the shader:/kernel RedGradientFilterinput image4 src;output pixel4 dst;Flash ActionScript 3.0 语言和组件参考(ShaderFilter)第 6 页 共 7 页parameter float width;void evaluatePixel()pixel4 temp = sampleNearest(src, outCoord();temp.r = 1.0 - (outCoord().x * (1.0 / width);dst = temp;/ ActionScr
17、ipt source code:/package import flash.display.Shader;import flash.display.Sprite;import flash.events.Event;import flash.filters.ShaderFilter;import .URLLoader;import .URLLoaderDataFormat;import .URLRequest;public class ShaderFilterExample extends Sprite private var loader:URLLoader;private var s:Spr
18、ite;public function ShaderFilterExample() loader = new URLLoader();loader.dataFormat = URLLoaderDataFormat.BINARY;loader.addEventListener(Event.COMPLETE, loadCompleteHandler);loader.load(new URLRequest(“gradient.pbj“);s = new Sprite();s.graphics.beginFill(0x009900);s.graphics.drawCircle(100, 100, 10
19、0);addChild(s);Flash ActionScript 3.0 语言和组件参考(ShaderFilter)第 7 页 共 7 页private function loadCompleteHandler(event:Event):void var shader:Shader = new Shader(loader.data);shader.data.width.value = s.width;var gradientFilter:ShaderFilter = new ShaderFilter(shader);s.filters = gradientFilter; 2004-2008 Adobe Systems Incorporated. All rights reserved. Sun Oct 26 2008, 02:41 AM -07:00