flash.display
public final dynamic class ShaderParameter
继承ShaderParameter Inheritance Object

ShaderParameter 实例表示着色器内核的单一输入参数。可以将内核定义为接受在内核执行过程中使用的 0 个、1 个或更多参数。ShaderParameter 提供有关参数的信息,比如参数所需数据的类型。它还提供一个机制,用于设置在着色器执行时使用的参数值。若要为着色器参数指定一个或多个值,请创建包含这个值或这些值的数组,并将其赋予 value 属性。

表示 Shader 实例的参数的 ShaderParameter 实例将作为 Shader 实例的 data 属性的一个属性进行访问。ShaderParameter 属性的名称与着色器代码中参数的名称相同。例如,如果着色器定义一个名为 radius 的参数,则表示 radius 参数的 ShaderParameter 实例可作为 radius 属性使用,如下所示:

var radiusParam:ShaderParameter = myShader.data.radius;

除了 ShaderParameter 类的已定义属性外,每个 ShaderParameter 实例还具有与为参数定义的任何元数据对应的附加属性。创建 ShaderParameter 对象时会将这些属性添加到该对象中。这些属性的名称与着色器源代码中指定的元数据名称相匹配。每个属性的数据类型因对应元数据的数据类型而异。文本元数据值(如“description”)是 String 实例。具有非字符串值(如 minValuedefaultValue)的元数据属性表示为 Array 实例。元素的数量和元素数据类型对应于元数据值。

例如,假设一个着色器包括以下两个参数声明:

parameter float2 size
  <
      description: "The size of the image to which the kernel is applied";
      minValue: float2(0.0, 0.0);
      maxValue: float2(100.0, 100.0);
      defaultValue: float2(50.0, 50.0);
  >;
  
  parameter float radius
  <
      description: "The radius of the effect";
      minValue: 0.0;
      maxValue: 50.0;
      defaultValue: 25.0;
  >;

对应于 size 参数的 ShaderParameter 实例除了其内置属性外还具有以下元数据属性:

属性名称数据类型
name String "size"
description String "The size of the image to which the kernel is applied"
minValue Array [0, 0]
maxValue Array [100, 100]
defaultValue Array [50, 50]

对应于 radius 参数的 ShaderParameter 具有以下附加属性:

属性名称数据类型
name String "radius"
description String "The radius of the effect"
minValue Array [0]
maxValue Array [50]
defaultValue Array [25]

通常,开发人员代码不直接创建 ShaderParameter 实例。在创建 Shader 实例时,将为着色器的每个参数创建一个 ShaderParameter 实例。

另请参见

flash.display.ShaderData
flash.display.Shader.data


公共属性
 属性定义方
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  index : int
[只读 (read-only)] 参数的从 0 开始的索引。
ShaderParameter
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  type : String
[只读 (read-only)] 着色器中定义的参数的数据类型。
ShaderParameter
  value : Array
以参数值形式传入到着色器的一个或多个值。
ShaderParameter
公共方法
 方法定义方
  
创建 ShaderParameter 实例。
ShaderParameter
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
属性详细信息
index属性
index:int  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

参数的从 0 开始的索引。



实现
    public function get index():int
type属性 
type:String  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

着色器中定义的参数的数据类型。type 属性的可能值的集合由 ShaderParameterType 类中的常量定义。



实现
    public function get type():String

另请参见

value属性 
value:Array  [读写]

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

以参数值形式传入到着色器的一个或多个值。value 属性为索引数组。数组元素的数量和类型对应于参数的数据类型(可使用 type 属性确定)。

下表指示参数类型以及 value 数组元素的对应数量和数据类型:

参数类型元素数量元素数据类型
float (ShaderParameterType.FLOAT ) 1Number
float2 (ShaderParameterType.FLOAT2 ) 2Number
float3 (ShaderParameterType.FLOAT3 ) 3Number
float4 (ShaderParameterType.FLOAT4 ) 4Number
int (ShaderParameterType.INT ) 1int 或 uint
int2 (ShaderParameterType.INT2 ) 2int 或 uint
int3 (ShaderParameterType.INT3 ) 3int 或 uint
int4 (ShaderParameterType.INT4 ) 4int 或 uint
bool (ShaderParameterType.BOOL ) 1Boolean
bool2 (ShaderParameterType.BOOL2 ) 2Boolean
bool3 (ShaderParameterType.BOOL3 ) 3Boolean
bool4 (ShaderParameterType.BOOL4 ) 4Boolean
float2x2 (ShaderParameterType.MATRIX2X2 ) 4Number
float3x3 (ShaderParameterType.MATRIX3X3 ) 9Number
float4x4 (ShaderParameterType.MATRIX4X4 ) 16Number

对于矩阵参数类型,数组元素将填充矩阵的行,然后填充列。例如,假设使用以下 ActionScript 行来填充名为 myMatrixfloat2x2 参数:

myShader.data.myMatrix.value = [.1, .2, .3, .4];

在着色器内,矩阵元素具有以下值:



实现
    public function get value():Array
    public function set value(value:Array):void
构造函数详细信息
ShaderParameter()构造函数
public function ShaderParameter()

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

创建 ShaderParameter 实例。开发人员代码不直接调用 ShaderParameter 构造函数。在创建 Shader 实例时,将为着色器的每个参数创建一个 ShaderParameter 实例。