パッケージ | flash.system |
クラス | public final class WorkerDomain |
継承 | WorkerDomain Object |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 11.4, AIR 3.4 |
注意:並列処理のためのワーカーの使用は、Flash Player およびデスクトッププラットフォームの AIR でサポートされます。モバイルプラットフォームについては、並列処理は Android の AIR ではサポートされますが、iOS の AIR ではサポートされません。静的 isSupported プロパティを使用して、並行処理を使用する前に、並行処理がサポートされているかどうかをチェックできます。
WorkerDomain()
コンストラクターを呼び出して WorkerDomain インスタンスを直接作成しないでください。1 つのアプリケーションには単一の WorkerDomain インスタンスがあります。並行処理のためのワーカーの使用がサポートされているコンテキストでは、ランタイムは起動時に自動的に WorkerDomain を作成します。静的 current
プロパティを使用してそのインスタンスにアクセスします。
Worker クラスの新しいインスタンスを作成するには、createWorker()
メソッドを使用します。現在実行中の Worker オブジェクトのセットにアクセスするには、listWorkers()
メソッドを使用します。
関連する API エレメント
プロパティ | 定義元 | ||
---|---|---|---|
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | ||
current : WorkerDomain [静的] [読み取り専用]
コードが現在実行中の WorkerDomain インスタンスです。 | WorkerDomain | ||
isSupported : Boolean [静的] [読み取り専用]
現在のランタイムコンテキストが同時コード実行で WorkerDomain および Worker オブジェクトをサポートするかどうかを示します。 | WorkerDomain |
メソッド | 定義元 | ||
---|---|---|---|
swf のバイトから新しい Worker インスタンスを作成します。 | WorkerDomain | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | ||
現在実行中の WorkerDomain(Worker インスタンスの state プロパティは WorkerState.RUNNING)のワーカーのセットへのアクセスを提供します。 | WorkerDomain | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのプリミティブな値を返します。 | Object |
current | プロパティ |
current:WorkerDomain
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 11.4, AIR 3.4 |
コードが現在実行中の WorkerDomain インスタンスです。これは、そのアプリケーションの唯一の WorkerDomain です。
実装
public static function get current():WorkerDomain
isSupported | プロパティ |
createWorker | () | メソッド |
public function createWorker(swf:ByteArray, giveAppPrivileges:Boolean = false):Worker
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 11.4, AIR 3.4 |
swf のバイトから新しい Worker
インスタンスを作成します。
各ワーカーは、分離した swf アプリケーションから作成され、分離した swf アプリケーションとして実行されます。Worker インスタンスを作成するには、SWF ファイルのバイトを ByteArray インスタンスとして取得し、このメソッドに渡します。この目的で swf のバイトにアクセスするには、次の 3 つの共通の方法があります。
[Embed] メタタグを使用して、.swf ファイルをアプリケーションに ByteArray として埋め込みます。
// Embed the SWF file [Embed(source="../swfs/BgWorker.swf", mimeType="application/octet-stream")] private static var BgWorker_ByteClass:Class; private function createWorker():void { // create the background worker var workerBytes:ByteArray = new BgWorker_ByteClass(); var bgWorker:Worker = WorkerDomain.current.createWorker(workerBytes); // listen for worker state changes to know when the worker is running bgWorker.addEventListener(Event.WORKER_STATE, workerStateHandler); // set up communication between workers using // setSharedProperty(), createMessageChannel(), etc. // ... (not shown) bgWorker.start(); }
URLLoader を使用して、外部 SWF ファイルをロードします。
// load the SWF file var workerLoader:URLLoader = new URLLoader(); workerLoader.dataFormat = URLLoaderDataFormat.BINARY; workerLoader.addEventListener(Event.COMPLETE, loadComplete); workerLoader.load(new URLRequest("BgWorker.swf")); private function loadComplete(event:Event):void { // create the background worker var workerBytes:ByteArray = event.target.data as ByteArray; var bgWorker:Worker = WorkerDomain.current.createWorker(workerBytes); // listen for worker state changes to know when the worker is running bgWorker.addEventListener(Event.WORKER_STATE, workerStateHandler); // set up communication between workers using // setSharedProperty(), createMessageChannel(), etc. // ... (not shown) bgWorker.start(); }
基本ワーカーおよびバックグラウンドワーカーとして単一の swf を使用します。
// The primordial worker's main class constructor public function PrimordialWorkerClass() { init(); } private function init():void { var swfBytes:ByteArray = this.loaderInfo.bytes; // Check to see if this is the primordial worker if (Worker.current.isPrimordial) { // create a background worker var bgWorker:Worker = WorkerDomain.current.createWorker(swfBytes); // listen for worker state changes to know when the worker is running bgWorker.addEventListener(Event.WORKER_STATE, workerStateHandler); // set up communication between workers using // setSharedProperty(), createMessageChannel(), etc. // ... (not shown) bgWorker.start(); } else // entry point for the background worker { // set up communication between workers using getSharedProperty() // ... (not shown) // start the background work }
createWorker()
を使用して Worker オブジェクトを作成しても、ワーカーの実行は開始されません。ワーカーのコード実行を開始するには、Worker オブジェクトの start()
メソッドを呼び出します。
ワーカーは、メインレンダリングスレッドが他のコードにブロックされることが原因でフレームレートがドロップする可能性を減らすので、便利です。ただし、ワーカーは追加のシステムメモリおよび CPU の使用を必要とし、これにより、アプリケーション全体のパフォーマンスに影響する可能性があります。各ワーカーはそれぞれ独自のランタイム仮想マシンのインスタンス使用するので、通常のワーカーのオーバーヘッドでさえ大きくなる可能性があります。ワーカーを使用する場合は、すべての対象プラットフォームでコードをテストして、システムへの要求が大きすぎないことを確認します。一般的に、2 つ以上のバックグラウンドワーカーを使用しないようにすることをお勧めします。
パラメーター
swf:ByteArray — 有効な swf のバイトを含む ByteArray
| |
giveAppPrivileges:Boolean (default = false ) — ワーカーに AIR のアプリケーションサンドボックスの権限を与えるかどうかを示します。このパラメーターは Flash Player では無視されます。
|
Worker — 作成が成功した場合の、新しく作成された Worker。null の戻り値は、現在のコンテキストが並行処理をサポートしていないか、または新しいワーカーを作成すると実装の制限を超えてしまうので、ワーカーが作成できなかったことを示します。
|
例外
SecurityError — バイトを swf パラメーターに渡す swf が、このメソッドを呼び出している swf と同じセキュリティドメインからのものでない場合
|
listWorkers | () | メソッド |
Tue Jun 12 2018, 10:34 AM Z