flash.display
public class ShaderJob
继承ShaderJob Inheritance EventDispatcher Inheritance Object

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

ShaderJob 实例用于在独立模式中执行着色器操作。着色器操作执行并返回其结果数据。由开发人员确定如何使用结果。

在独立模式中使用着色器有两个主要原因:

shader 属性(或构造函数参数)指定 Shader 实例(表示用于操作的着色器)。您使用关联的 ShaderParameter 或 ShaderInput 实例提供着色器所需的任何参数或输入。

在执行 ShaderJob 操作之前,您提供一个向其写入结果的对象,方法是将其设置为 target 属性的值。当着色器操作完成时,结果将写入 target 对象。

若要开始后台着色器操作,请调用 start() 方法。当该操作完成时,结果将写入 target 对象。此时 ShaderJob 实例将调度 complete 事件,通知侦听器结果已可用。

若要同步执行着色器操作(即不在后台运行),请调用 start() 方法并作为参数传递 true。着色器在主要执行线程中运行,并且您的代码在操作完成之前将暂停。完成时,结果将写入 target 对象。这时,应用程序将继续运行下一行代码。

另请参见

Shader
ShaderInput
ShaderParameter
ShaderEvent


公共属性
 属性定义方
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  height : int
target 中结果数据的高度(如果为 ByteArray 或 Vector.<Number> 实例。
ShaderJob
  progress : Number
[只读 (read-only)] 正在运行的着色器的进度。
ShaderJob
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  shader : Shader
用于操作的着色器。
ShaderJob
  target : Object
在其中写入着色器操作结果的对象。
ShaderJob
  width : int
target 中结果数据的宽度(如果为 ByteArray 或 Vector.<Number> 实例。
ShaderJob
公共方法
 方法定义方
  
ShaderJob(shader:Shader = null, target:Object = null, width:int = 0, height:int = 0)
ShaderJob
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
EventDispatcher
  
取消当前运行的着色器操作。
ShaderJob
 Inherited
将事件调度到事件流中。
EventDispatcher
 Inherited
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
EventDispatcher
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。
EventDispatcher
 Inherited
设置循环操作动态属性的可用性。
Object
  
start(waitForCompletion:Boolean = false):void
根据 waitForCompletion 参数的值,以同步模式或异步模式启动着色器操作。
ShaderJob
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
 Inherited
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
EventDispatcher
事件
 事件 摘要 定义方
 Inherited[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。EventDispatcher
  当异步执行的 ShaderJob 使用着色器处理完数据时调度。ShaderJob
 Inherited[广播事件] 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 参数的值,以同步模式或异步模式启动着色器操作。

在异步模式(当 waitForCompletionfalse 时,即默认模式)中,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:ShaderEvent — 如果使用 waitForCompletion 的参数 true 调用 start() 方法,则在操作完成时调度。

引发
ArgumentError — 当 target 属性为 null,或者不是 BitmapData、ByteArray 或 Vector 时。<Number> 实例时。
 
ArgumentError — 当着色器指定了未提供的图像输入时。
 
ArgumentError — 当使用 ByteArray 或 Vector.<Number> 实例作为输入,并且没有为 ShaderInput 指定 widthheight 属性或指定的值与输入对象中的数据量不匹配时。有关详细信息,请参阅 ShaderInput.input 属性。
事件详细信息
complete 事件
事件对象类型: flash.events.ShaderEvent
属性 ShaderEvent.type = 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)。