包 | spark.filters |
类 | public dynamic class ShaderFilter |
继承 | ShaderFilter ![]() |
实现 | IBitmapFilter, IEventDispatcher |
语言版本: | ActionScript 3.0 |
产品版本: | Flex 4 |
运行时版本: | Flash Player 10, AIR 1.5 |
ShaderFilter 类必须使用 Shader 对象的实例或者 Shader 的 Class 代理(例如来自 Embed)来初始化。这样,ShaderFilter 类就会充当基础 Shader 的代理,提供一种方便的机制,将标量和多维着色器输入参数都作为简单命名的属性直接访问。
要设置简单标量着色器输入参数(例如类型为 FLOAT 或 INT 的此类参数),可以直接引用属性,如 myFilter.radius
。
要设置多维着色器输入参数(如 FLOAT2)的各个组件或设置其动画,可以使用属性后缀约定直接访问各个值。以下代码显示设置 FLOAT2 属性 center
的第一个和第二个组件的两种方式:
// 'center' is an input parameter of type FLOAT2.
shader.center = [10,20];
// Use property suffix convention to access the first and second component of 'center'.
shader.center_x = 10;
shader.center_y = 20;
可以使用的支持的属性后缀的全集如下所示:
- 对于类型为 BOOL2、BOOL3、BOOL4、FLOAT2、FLOAT3、FLOAT4、INT2、INT3 或 INT4 的着色器输入参数,可以使用“r g b a”、“x y z w”或“s t p q”分别访问第一个、第二个、第三个和第四个组件。
- 对于类型为 MATRIX2x2、MATRIX3x3 或 MATRIX4x4 的着色器输入参数,可以使用“a b c d e f g h i j k l m n o p”分别访问给定矩阵的第 1 个至第 16 个组件。
随着 ShaderFilter 上属性的更改(例如在动画过程中),ShaderFilter 会自动将其自身重新应用于它所应用的可视组件的滤镜数组。
MXML 语法
The <s:ShaderFilter>
tag inherits all of the tag
attributes of its superclass and adds the following tag attributes:
<s:ShaderFilter Properties bottomExtension="0" leftExtension="0" precisionHint="full" rightExtension="0" shader="[]" topExtension="0" />
相关 API 元素
属性 | 由以下参数定义 | ||
---|---|---|---|
bottomExtension : int
目标对象底部的增大量(以像素为单位)。 | ShaderFilter | ||
leftExtension : int
目标对象左侧的增大量(以像素为单位)。 | ShaderFilter | ||
precisionHint : String
基础着色器所执行的数学运算的精度。 | ShaderFilter | ||
rightExtension : int
目标对象右侧的增大量(以像素为单位)。 | ShaderFilter | ||
shader : Shader
一个 flash.display.Shader 实例。 | ShaderFilter | ||
topExtension : int
目标对象顶部的增大量(以像素为单位)。 | ShaderFilter |
方法 | 由以下参数定义 | ||
---|---|---|---|
ShaderFilter(shader:Object = null)
构造函数。 | ShaderFilter |
bottomExtension | 属性 |
bottomExtension:int
语言版本: | ActionScript 3.0 |
产品版本: | Flex 4 |
运行时版本: | Flash Player 10, AIR 1.5 |
目标对象底部的增大量(以像素为单位)。
该增大量是指超出目标对象范围并在执行着色器期间传递到该着色器的范围。在执行着色器时,Flash Player 或 AIR 将计算影片剪辑的正常范围,然后基于 leftExtension
、rightExtension
、topExtension
和 bottomExtension
值扩展该范围。
默认值为 0。
实现
public function get bottomExtension():int
public function set bottomExtension(value:int):void
leftExtension | 属性 |
leftExtension:int
语言版本: | ActionScript 3.0 |
产品版本: | Flex 4 |
运行时版本: | Flash Player 10, AIR 1.5 |
目标对象左侧的增大量(以像素为单位)。
该增大量是指超出目标对象范围并在执行着色器期间传递到该着色器的范围。在执行着色器时,Flash Player 或 AIR 将计算影片剪辑的正常范围,然后基于 leftExtension
、rightExtension
、topExtension
和 bottomExtension
值扩展该范围。
默认值为 0。
实现
public function get leftExtension():int
public function set leftExtension(value:int):void
precisionHint | 属性 |
rightExtension | 属性 |
rightExtension:int
语言版本: | ActionScript 3.0 |
产品版本: | Flex 4 |
运行时版本: | Flash Player 10, AIR 1.5 |
目标对象右侧的增大量(以像素为单位)。
该增大量是指超出目标对象范围并在执行着色器期间传递到该着色器的范围。在执行着色器时,Flash Player 或 AIR 将计算影片剪辑的正常范围,然后基于 leftExtension
、rightExtension
、topExtension
和 bottomExtension
值扩展该范围。
默认值为 0。
实现
public function get rightExtension():int
public function set rightExtension(value:int):void
shader | 属性 |
topExtension | 属性 |
topExtension:int
语言版本: | ActionScript 3.0 |
产品版本: | Flex 4 |
运行时版本: | Flash Player 10, AIR 1.5 |
目标对象顶部的增大量(以像素为单位)。
该增大量是指超出目标对象范围并在执行着色器期间传递到该着色器的范围。在执行着色器时,Flash Player 或 AIR 将计算影片剪辑的正常范围,然后基于 leftExtension
、rightExtension
、topExtension
和 bottomExtension
值扩展该范围。
默认值为 0。
实现
public function get topExtension():int
public function set topExtension(value:int):void
ShaderFilter | () | 构造函数 |
<?xml version="1.0"?> <s:Application xmlns:s="library://ns.adobe.com/flex/spark" xmlns:fx="http://ns.adobe.com/mxml/2009"> <!-- The hypothetical 'spherize' shader applied below has two input parameters, 'center' and 'radius' with the following attributes: parameter 'center' ==< type: float2 minValue: float2(-200,-200) maxValue: float2(800,500) defaultValue: float2(400,250) description: "displacement center" parameter 'radius' ==< type: float minValue: float(.1) maxValue: float(400) defaultValue: float(200) description: "radius" --> <s:Label text="ABCDEF"> <s:filters> <s:ShaderFilter shader="@Embed(source='shaders/spherize.pbj')" radius="25" center_x="50" center_y="15" /> </s:filters> </s:Label> </s:Application>
Tue Jun 12 2018, 11:04 AM Z