パッケージ | flash.display |
クラス | public class ShaderJob |
継承 | ShaderJob EventDispatcher Object |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
シェーダーをスタンドアローンモードで使用する主な理由が 2 つあります。
- イメージ以外のデータの処理:ShaderJob インスタンスを使用して入力値を制御し、シェーダーの結果の使用方法を制御できます。シェーダーは、イメージデータの代わりにバイナリデータまたは数値データとして結果を返すことができます。
- バックグラウンド処理:一部の複雑なシェーダーは、実行するのに著しく時間がかかります。アプリケーションのメイン実行で複雑なシェーダーを実行すると、ユーザー入力や画面の更新など、アプリケーションの他の部分が減速する場合があります。ShaderJob インスタンスを使用すると、シェーダーをバックグラウンドで実行できます。この方法でシェーダーを実行すると、シェーダー操作はアプリケーションのメイン実行とは別個に実行されます。
shader
プロパティ(またはコンストラクターパラメーター)は、操作に使用するシェーダーを表す Shader インスタンスを指定します。シェーダーに必要なパラメーターや入力を指定するには、関連する ShaderParameter や ShaderInput インスタンスを使用します。
ShaderJob 操作の実行前に、結果の書き込み先のオブジェクトを target
プロパティの値として設定します。シェーダー操作が終了すると、結果が target
オブジェクトに書き込まれます。
バックグラウンドでのシェーダー操作を開始するには、start()
メソッドを呼び出します。操作が終了すると、結果が target
オブジェクトに書き込まれます。その時点で、ShaderJob インスタンスは complete
イベントを送出し、結果が出ていることをリスナーに通知します。
シェーダーをバックグラウンドで実行せずに同期的に実行するには、start()
メソッドを呼び出して true
を引数として渡します。シェーダーはメイン実行のスレッドで実行され、この操作が完了するまでコードが一時停止します。終了すると、結果が target
オブジェクトに書き込まれます。その後にアプリケーションの実行が次のコード行から続行されます。
関連する API エレメント
プロパティ | 定義元 | ||
---|---|---|---|
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | ||
height : int
ByteArray または Vector の場合は、target の結果データの高さです。<Number> インスタンスです。 | ShaderJob | ||
progress : Number [読み取り専用]
実行中のシェーダーの進行状況です。 | ShaderJob | ||
shader : Shader
操作に使用したシェーダーです。 | ShaderJob | ||
target : Object
シェーダー操作の結果が書き込まれるオブジェクトです。 | ShaderJob | ||
width : int
ByteArray または Vector の場合は、target の結果データの幅です。<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 | ||
指定されたオブジェクトのプリミティブな値を返します。 | Object | ||
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。 | EventDispatcher |
イベント | 概要 | 定義元 | ||
---|---|---|---|---|
[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。 | EventDispatcher | |||
ShaderJob を非同期的に実行したときに、シェーダーによるデータ処理が終了すると送出されます。 | ShaderJob | |||
[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。 | EventDispatcher |
height | プロパティ |
progress | プロパティ |
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 bit 浮動小数点の値に設定します。その場合、シェーダーの入力は image1
データ型で定義する必要があります。
実装
public function get shader():Shader
public function set shader(value:Shader):void
関連する API エレメント
target | プロパティ |
width | プロパティ |
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 ) — ByteArray または Vector の場合は、target の結果データの幅です。<Number> インスタンスです。ByteArray または Vector のサイズです。<Number> インスタンスは必要に応じて拡大され、既存のデータは上書きされます。
| |
height:int (default = 0 ) — ByteArray または Vector の場合は、target の結果データの高さです。<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
イベントが送出されます。
バックグラウンドでは一度に 1 つの ShaderJob 操作のみが実行されます。シェーダー操作は実行されるまでキューに入ります。シェーダー操作の実行中に start()
メソッドを呼び出すと、追加の操作がキューの末尾に追加されます。後で順番が来ると、その操作が実行されます。
シェーダー操作を同期モードで実行するには、start()
を呼び出して waitForCompletion
パラメーター(唯一のパラメーター)に true
を渡します。シェーダー操作が完了するまでは、コードの実行が start()
を呼び出した箇所で一時停止します。操作が完了すると、結果が出て次のコード行から実行が続行されます。
start()
メソッドを呼び出すと、shader
プロパティの Shader インスタンスの内部的にコピーされます。シェーダー操作は、元のシェーダーを参照するのではなく、その内部コピーを使用します。パラメーター値、入力、バイトコードの変更などの変更をシェーダーに加えたとしても、シェーダーの処理で使用したコピーシェーダーにはその変更は適用されません。シェーダーの変更をシェーダーの処理に適用するには、(必要に応じて)cancel()
メソッドを呼び出し、もう一度 start()
メソッドを呼び出して、シェーダーの処理を再開します。
シェーダー操作の実行中、target
オブジェクトの値は変わりません。操作が終了すると(非同期モードで complete
イベントが送出されると)、結果全体が一度に target
オブジェクトに書き込まれます。target
オブジェクトが BitmapData インスタンスで、操作が終了する前にその dispose()
メソッドが呼び出された場合でも、非同期モードでは complete
イベントが送出されます。ただし、結果データは破棄状態にあるため、BitmapData オブジェクトには書き込まれません。
パラメーター
waitForCompletion:Boolean (default = false ) — シェーダーの実行をバックグラウンド(false 、デフォルト)で行うか、プログラムのメイン実行(true )で行うかを指定します。
|
イベント
complete: — start() メソッドを呼び出して waitForCompletion 引数に true を渡した場合は、操作の終了時に送出されます。
|
例外
ArgumentError — target プロパティが null または BitmapData、ByteArray、Vector でない場合。<Number> インスタンスです。
| |
ArgumentError — シェーダーが指定したイメージ入力が存在しない場合。
| |
ArgumentError — ByteArray または Vector の場合。<Number> インスタンスが入力として使用され、ShaderInput の width および height プロパティが指定されていない、または指定された値が入力オブジェクトのデータ量と一致しない場合。詳しくは、ShaderInput.input プロパティを参照してください。
|
complete | イベント |
flash.events.ShaderEvent
プロパティ ShaderEvent.type =
flash.events.ShaderEvent.COMPLETE
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
ShaderJob を非同期的に実行したときに、シェーダーによるデータ処理が終了すると送出されます。ShaderJob インスタンスを非同期的に実行するには、start()
メソッドを呼び出して waitForCompletion
パラメーターに値として false
を渡します。
type
プロパティ(complete
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
BitmapData | 終了した処理の結果を含む BitmapData オブジェクトです(またはターゲットが BitmapData オブジェクトでなかった場合は、null )。 |
ByteArray | 終了した処理の結果を含む ByteArray オブジェクトです(またはターゲットが ByteArray オブジェクトでなかった場合は、null )。 |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | 完了を報告する ShaderJob オブジェクトです。 |
vector | 終了した処理の結果を含む Vector.<Number> インスタンスです(またはターゲットが Vector.<Number> インスタンスでなかった場合は、null )。 |
Tue Jun 12 2018, 10:34 AM Z