包 | flash.display |
类 | public class ShaderJob |
继承 | ShaderJob EventDispatcher Object |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 10, AIR 1.5 |
在独立模式中使用着色器有两个主要原因:
shader
属性(或构造函数参数)指定 Shader 实例(表示用于操作的着色器)。您使用关联的 ShaderParameter 或 ShaderInput 实例提供着色器所需的任何参数或输入。
在执行 ShaderJob 操作之前,您提供一个向其写入结果的对象,方法是将其设置为 target
属性的值。当着色器操作完成时,结果将写入 target
对象。
若要开始后台着色器操作,请调用 start()
方法。当该操作完成时,结果将写入 target
对象。此时 ShaderJob 实例将调度 complete
事件,通知侦听器结果已可用。
若要同步执行着色器操作(即不在后台运行),请调用 start()
方法并作为参数传递 true
。着色器在主要执行线程中运行,并且您的代码在操作完成之前将暂停。完成时,结果将写入 target
对象。这时,应用程序将继续运行下一行代码。
另请参见
属性 | 定义方 | ||
---|---|---|---|
constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | ||
height : int target 中结果数据的高度(如果为 ByteArray 或 Vector.<Number> 实例。 | ShaderJob | ||
progress : Number [只读 (read-only)] 正在运行的着色器的进度。 | ShaderJob | ||
prototype : Object [静态]
对类或函数对象的原型对象的引用。 | Object | ||
shader : Shader 用于操作的着色器。 | ShaderJob | ||
target : Object 在其中写入着色器操作结果的对象。 | ShaderJob | ||
width : int target 中结果数据的宽度(如果为 ByteArray 或 Vector.<Number> 实例。 | ShaderJob |
方法 | 定义方 | ||
---|---|---|---|
ShaderJob | |||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void 使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。 | EventDispatcher | ||
取消当前运行的着色器操作。 | ShaderJob | ||
将事件调度到事件流中。 | EventDispatcher | ||
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。 | EventDispatcher | ||
指示对象是否已经定义了指定的属性。 | Object | ||
指示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | ||
指示指定的属性是否存在、是否可枚举。 | Object | ||
从 EventDispatcher 对象中删除侦听器。 | EventDispatcher | ||
设置循环操作动态属性的可用性。 | Object | ||
根据 waitForCompletion 参数的值,以同步模式或异步模式启动着色器操作。 | ShaderJob | ||
返回指定对象的字符串表示形式。 | Object | ||
返回指定对象的原始值。 | Object | ||
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。 | EventDispatcher |
事件 | 摘要 | 定义方 | ||
---|---|---|---|---|
[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。 | EventDispatcher | |||
当异步执行的 ShaderJob 使用着色器处理完数据时调度。 | ShaderJob | |||
[广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。 | EventDispatcher |
height | 属性 |
height:int
[读写] 语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 10, AIR 1.5 |
target
中结果数据的高度(如果为 ByteArray 或 Vector.<Number> 实例)。如有必要,会增大 ByteArray 或 Vector.<Number> 实例的大小,并会覆盖现有数据。
public function get height():int
public function set height(value:int):void
progress | 属性 |
progress:Number
[只读 (read-only)] 语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 10, AIR 1.5 |
正在运行的着色器的进度。此属性是从 0 到 1 的一个值。0 为初始值(0% 完成)。1 指示着色器已完成其操作。
如果调用了 cancel()
方法,此属性将变为 undefined
,并且,在着色器操作再次开始之前,将无法可靠地使用此属性的值。
public function get progress():Number
shader | 属性 |
shader:Shader
[读写] 语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 10, AIR 1.5 |
用于操作的着色器。必须使用 Shader 实例的 data
属性的 ShaderInput 或 ShaderParameter 属性提供着色器所需的任何输入或参数。必须使用与输入对应的 ShaderInput 来提供输入,即使它与 target
对象相同。
若要处理包含线性数据数组(而不是图像数据)的 ByteArray,请在 ByteArray 中将对应 ShaderInput 实例的 height
设置为 1,并将 width
设置为 32 位浮点值数字。在这种情况下,必须将着色器中的输入定义为具有 image1
数据类型。
public function get shader():Shader
public function set shader(value:Shader):void
另请参见
target | 属性 |
target:Object
[读写] 语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 10, AIR 1.5 |
在其中写入着色器操作结果的对象。此对象必须为 BitmapData、ByteArray 或 Vector.<Number> 实例。
public function get target():Object
public function set target(value:Object):void
width | 属性 |
width:int
[读写] 语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 10, AIR 1.5 |
target
中结果数据的宽度(如果为 ByteArray 或 Vector.<Number> 实例)。如有必要,会增大 ByteArray 或 Vector.<Number> 实例的大小,并会覆盖现有数据。
public function get width():int
public function set width(value:int):void
ShaderJob | () | 构造函数 |
public function ShaderJob(shader:Shader = null, target:Object = null, width:int = 0, height:int = 0)
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 10, AIR 1.5 |
shader:Shader (default = null ) — 要用于操作的着色器。 | |
target:Object (default = null ) — 在其中写入着色器操作结果的对象。此参数必须为 BitmapData、ByteArray 或 Vector.<Number> 实例。 | |
width:int (default = 0 ) —
target 中结果数据的宽度(如果为 ByteArray 或 Vector.<Number> 实例)。如有必要,会增大 ByteArray 或 Vector.<Number> 实例的大小,并会覆盖现有数据。
| |
height:int (default = 0 ) —
target 中结果数据的高度(如果为 ByteArray 或 Vector.<Number> 实例)。如有必要,会增大 ByteArray 或 Vector.<Number> 实例的大小,并会覆盖现有数据。
|
cancel | () | 方法 |
public function cancel():void
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 10, AIR 1.5 |
取消当前运行的着色器操作。放弃任何已计算出的结果数据。未调度 complete
事件。
调用 cancel()
多次不会产生额外效果。
start | () | 方法 |
public function start(waitForCompletion:Boolean = false):void
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 10, AIR 1.5 |
根据 waitForCompletion
参数的值,以同步模式或异步模式启动着色器操作。
在异步模式(当 waitForCompletion
为 false
时,即默认模式)中,ShaderJob 执行在后台运行。着色器操作不会影响显示或其它操作的响应能力。在异步模式中,start()
调用将立即返回,并且该程序继续执行下一行代码。当异步着色器操作完成时,结果将可用并调度 complete
事件。
一次只有一个后台 ShaderJob 操作执行。Shader 操作在执行之前将保留在队列中。如果在着色器操作正在执行的过程中调用 start()
方法,则会将附加操作添加到队列的末尾。以后,在轮到它时将会执行。
若要以同步模式执行着色器操作,请使用 waitForCompletion
参数(唯一参数)的 true
值调用 start()
。您的代码将在调用 start()
时暂停,直到着色器操作完成。这时,结果将可用并将继续执行下一行代码。
调用 start()
方法时,将在内部复制 shader
属性中的 Shader 实例。着色器操作将使用该内部副本,而不是对原始着色器的引用。对着色器进行的任何更改(比如更改参数值、输入或字节代码)不会应用于所复制的用于着色器处理的着色器。若要将着色器更改结合到着色器处理中,请调用 cancel()
方法(如有必要),并再次调用 start()
方法以重新开始着色器处理。
当着色器操作正在执行时,target
对象的值不会变化。操作完成(并以异步模式调度了 complete
事件)后,整个结果将一次性写入 target
对象。如果 target
对象是 BitmapData 实例,并且在操作完成之前调用了其 dispose()
方法,则仍然会以异步模式调度 complete
事件。但是,结果数据不会写入 BitmapData 对象,因为该对象处于已处理状态。
参数
waitForCompletion:Boolean (default = false ) —
指定是在后台(默认值为 false )还是在主要程序执行 (true ) 中执行着色器。
|
complete: — 如果使用 waitForCompletion 的参数 true 调用 start() 方法,则在操作完成时调度。 |
ArgumentError —
当 target 属性为 null ,或者不是 BitmapData、ByteArray 或 Vector 时。<Number> 实例时。
| |
ArgumentError — 当着色器指定了未提供的图像输入时。 | |
ArgumentError —
当使用 ByteArray 或 Vector.<Number> 实例作为输入,并且没有为 ShaderInput 指定 width 和 height 属性或指定的值与输入对象中的数据量不匹配时。有关详细信息,请参阅 ShaderInput.input 属性。
|
complete | 事件 |
flash.events.ShaderEvent
flash.events.ShaderEvent.COMPLETE
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 10, AIR 1.5 |
当异步执行的 ShaderJob 使用着色器处理完数据时调度。当使用 waitForCompletion
参数的 false
值调用 start()
方法时,将异步执行 ShaderJob 实例。
complete
事件对象的 type
属性值。
此事件具有以下属性:
属性 | 值 |
---|---|
bubbles
|
false
|
bitmapData
|
包含已完成操作的结果的 BitmapData 对象(如果目标不是 BitmapData 对象,则为 null )。
|
byteArray
|
包含已完成操作的结果的 ByteArray 对象(如果目标不是 ByteArray 对象,则为 null )。
|
cancelable
|
false ;没有要取消的默认行为。
|
currentTarget
| 当前正在使用某个事件侦听器处理事件对象的对象。 |
target
| 报告完成的 ShaderJob 对象。 |
vector
|
包含已完成操作的结果的 Vector.<Number> 实例(如果目标不是 Vector.<Number> 实例,则为 null )。
|