Adobe® Flash® Platform 用 ActionScript® 3.0 リファレンスガイド
ホーム  |  パッケージおよびクラスリストの非表示 |  パッケージ  |  クラス  |  新機能  |  索引  |  付録  |  英語で表示される理由
フィルター: AIR 30.0 以前, Flash Player 30.0 以前, Flash Lite 4
Flex 4.6 以前, Flash Pro CS6 以前
フィルターを非表示
flash.system 

WorkerDomain  - AS3

パッケージflash.system
クラスpublic final class WorkerDomain
継承WorkerDomain Inheritance Object

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11.4, AIR 3.4

WorkerDomain クラスは、Worker オブジェクトを作成し、そのオブジェクトにアクセスするための方法を提供します。WorkerDomain は、セキュリティドメイン内のワーカーのセットを管理するランタイムのメカニズムを表します。

注意:並列処理のためのワーカーの使用は、Flash Player およびデスクトッププラットフォームの AIR でサポートされます。モバイルプラットフォームについては、並列処理は Android の AIR ではサポートされますが、iOS の AIR ではサポートされません。静的 isSupported プロパティを使用して、並行処理を使用する前に、並行処理がサポートされているかどうかをチェックできます。

WorkerDomain() コンストラクターを呼び出して WorkerDomain インスタンスを直接作成しないでください。1 つのアプリケーションには単一の WorkerDomain インスタンスがあります。並行処理のためのワーカーの使用がサポートされているコンテキストでは、ランタイムは起動時に自動的に WorkerDomain を作成します。静的 current プロパティを使用してそのインスタンスにアクセスします。

Worker クラスの新しいインスタンスを作成するには、createWorker() メソッドを使用します。現在実行中の Worker オブジェクトのセットにアクセスするには、listWorkers() メソッドを使用します。

関連する API エレメント



パブリックプロパティ
 プロパティ定義元
 Inheritedconstructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。
Object
  current : WorkerDomain
[静的] [読み取り専用] コードが現在実行中の WorkerDomain インスタンスです。
WorkerDomain
  isSupported : Boolean
[静的] [読み取り専用] 現在のランタイムコンテキストが同時コード実行で WorkerDomain および Worker オブジェクトをサポートするかどうかを示します。
WorkerDomain
パブリックメソッド
 メソッド定義元
  
createWorker(swf:ByteArray, giveAppPrivileges:Boolean = false):Worker
swf のバイトから新しい Worker インスタンスを作成します。
WorkerDomain
 Inherited
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
 Inherited
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
  
現在実行中の WorkerDomain(Worker インスタンスの state プロパティは WorkerState.RUNNING)のワーカーのセットへのアクセスを提供します。
WorkerDomain
 Inherited
指定されたプロパティが存在し、列挙できるかどうかを示します。
Object
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
 Inherited
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。
Object
 Inherited
指定されたオブジェクトのストリング表現を返します。
Object
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object
プロパティの詳細

current

プロパティ
current:WorkerDomain  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11.4, AIR 3.4

コードが現在実行中の WorkerDomain インスタンスです。これは、そのアプリケーションの唯一の WorkerDomain です。



実装
    public static function get current():WorkerDomain

isSupported

プロパティ 
isSupported:Boolean  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11.4, AIR 3.4

現在のランタイムコンテキストが同時コード実行で WorkerDomain および Worker オブジェクトをサポートするかどうかを示します。

並行処理が使用可能な場合、このプロパティの値は true です。



実装
    public static function get isSupported():Boolean
メソッドの詳細

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

()メソッド 
public function listWorkers():Vector.<Worker>

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11.4, AIR 3.4

現在実行中の WorkerDomain(Worker インスタンスの state プロパティは WorkerState.RUNNING)のワーカーのセットへのアクセスを提供します。

戻り値
Vector.<Worker> — 現在実行中のワーカーを含む、Worker インスタンスのベクトルです。




[ X ]英語で表示される理由
ActionScript 3.0 リファレンスガイドのコンテンツが英語で表示されます。

ActionScript 3.0 リファレンスガイドのすべての部分がすべての言語に翻訳されているわけではありません。言語エレメントが翻訳されていない場合、そのエレメントは英語で表示されます。例えば、ga.controls.HelpBox クラスはどの言語にも訳されていません。このため、リファレンスガイドの日本語バージョンでは、ga.controls.HelpBox クラスは英語で表示されます。