ActionScript® 3.0 Referenzhandbuch für die Adobe® Flash®-Plattform
Home  |  Liste der Pakete und Klassen ausblenden |  Pakete  |  Klassen  |  Neue Funktionen  |  Stichwortverzeichnis  |  Anhänge  |  Warum auf Englisch?
Filter: Daten werden vom Server abgerufen...
Daten werden vom Server abgerufen...
flash.system 

WorkerDomain  - AS3

Paketflash.system
Klassepublic final class WorkerDomain
VererbungWorkerDomain Inheritance Object

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 11.4, AIR 3.4

Die WorkerDomain-Klasse stellt eine Möglichkeit zum Erstellen von Worker-Objekten und den Zugriff darauf bereit. Eine WorkerDomain repräsentiert den Mechanismus der Laufzeitumgebung, um die Workergruppe innerhalb einer Sicherheitsdomäne zu verwalten.

Hinweis: Die Verwendung von Workern für die Parallelität wird in Flash Player und in AIR auf Desktopplattformen unterstützt. Für mobile Plattformen wird Parallelität in AIR unter Android, aber nicht in AIR unter iOS unterstützt. Mit der statischen Eigenschaft isSupported können Sie überprüfen, ob Parallelität unterstützt wird, bevor Sie versuchen, diese zu verwenden.

Sie erstellen WorkerDomain-Instanzen nicht direkt, indem Sie den WorkerDomain()-Konstruktor aufrufen. Es gibt nur eine einzelne WorkerDomain-Instanz für eine Anwendung. Wenn die Verwendung von Workern für Parallelität unterstützt wird, erstellt die Laufzeitumgebung die WorkerDomain beim Starten automatisch. Sie können mit der statischen current-Eigenschaft auf diese Instanz zugreifen.

Um eine neue Instanz der Worker-Klasse zu erstellen, verwenden Sie die createWorker()-Methode. Um auf die Gruppe von Worker-Objekten, die parallel ausgeführt werden, zuzugreifen, verwenden Sie die listWorkers()-Methode.

Verwandte API-Elemente



Öffentliche Eigenschaften
 EigenschaftDefiniert von
 Inheritedconstructor : Object
Ein Verweis auf das Klassenobjekt oder die Konstruktorfunktion für eine angegebene Objektinstanz.
Object
  current : WorkerDomain
[statisch] [schreibgeschützt] Die WorkerDomain-Instanz, in der der Code zurzeit ausgeführt wird.
WorkerDomain
  isSupported : Boolean
[statisch] [schreibgeschützt] Gibt an, ob die aktuelle Laufzeitumgebung die WorkerDomain und Worker-Objekte für die gleichzeitige Codeausführung (Parallelität) unterstützt.
WorkerDomain
Öffentliche Methoden
 MethodeDefiniert von
  
createWorker(swf:ByteArray, giveAppPrivileges:Boolean = false):Worker
Erstellt eine neue Worker-Instanz aus den Bytes einer SWF-Datei.
WorkerDomain
 Inherited
Gibt an, ob für ein Objekt eine bestimmte Eigenschaft definiert wurde.
Object
 Inherited
Gibt an, ob eine Instanz der Object-Klasse in der Prototypkette des Objekts vorhanden ist, das als Parameter angegeben wurde.
Object
  
Ermöglicht den Zugriff auf die Gruppe der Worker in der WorkerDomain, die zurzeit ausgeführt werden (die state-Eigenschaft der Worker-Instanz ist WorkerState.RUNNING).
WorkerDomain
 Inherited
Gibt an, ob die angegebene Eigenschaft vorhanden ist und durchlaufen werden kann.
Object
 Inherited
Legt die Verfügbarkeit einer dynamischen Eigenschaft für Schleifenoperationen fest.
Object
 Inherited
Gibt die Stringdarstellung dieses Objekts zurück, formatiert entsprechend den Konventionen des Gebietsschemas.
Object
 Inherited
Gibt das angegebene Objekt als String zurück.
Object
 Inherited
Gibt den Grundwert des angegebenen Objekts zurück.
Object
Eigenschaftendetails

current

Eigenschaft
current:WorkerDomain  [schreibgeschützt]

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 11.4, AIR 3.4

Die WorkerDomain-Instanz, in der der Code zurzeit ausgeführt wird. Dies ist die einzige WorkerDomain in der Anwendung.



Implementierung
    public static function get current():WorkerDomain

isSupported

Eigenschaft 
isSupported:Boolean  [schreibgeschützt]

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 11.4, AIR 3.4

Gibt an, ob die aktuelle Laufzeitumgebung die WorkerDomain und Worker-Objekte für die gleichzeitige Codeausführung (Parallelität) unterstützt.

Wenn Parallelität unterstützt wird, hat diese Eigenschaft den Wert true.



Implementierung
    public static function get isSupported():Boolean
Methodendetails

createWorker

()Methode
public function createWorker(swf:ByteArray, giveAppPrivileges:Boolean = false):Worker

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 11.4, AIR 3.4

Erstellt eine neue Worker-Instanz aus den Bytes einer SWF-Datei.

Jeder Worker wird aus einer isolierten SWF-Anwendung erstellt und wird als solche ausgeführt. Um eine Worker-Instanz zu erstellen, beziehen Sie die Bytes der SWF-Datei als ByteArray-Instanz und übergeben sie an diese Methode. Es gibt drei gebräuchliche Wege, um zu diesem Zweck auf die Bytes einer SWF-Datei zuzugreifen:

  • Verwenden Sie das [Embed]-Metatag, um die SWF-Datei als ByteArray in die Anwendung einzubetten:

        // 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();
        }
  • Laden Sie eine externe SWF-Datei unter Verwendung eines URLLoader:

        // 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();
        }
  • Verwenden Sie eine einzelne SWF-Datei sowohl als ursprünglichen Worker als auch als Hintergrundworker:

        // 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
          }

Das Erstellen eines Worker-Objekts mit createWorker() startet nicht die Ausführung des Workers. Um die Ausführung des Codes eines Workers zu starten, rufen Sie die start()-Methode des Worker-Objekts auf.

Worker sind hilfreich, da sie die Wahrscheinlichkeit verringern, dass die Framerate aufgrund der Blockierung des Hauptrenderingthreads durch anderen Code abfällt. Auf der anderen Seite erfordern Worker zusätzlichen Systemarbeitsspeicher und CPU-Rechenleistung, was die allgemeine Anwendungsleistung verringern kann. Da jeder Worker seine eigene Instanz der virtuellen Maschine der Laufzeitumgebung verwendet, kann der Mehraufwand auch bei trivialen Workern erheblich ins Gewicht fallen. Wenn Sie Worker verwenden, testen Sie Ihren Code auf allen Zielplattformen, um sicherzustellen, dass die Anforderungen an das System nicht zu groß sind. Adobe empfiehlt, in einem typischen Szenario nicht mehr als ein oder zwei Hintergrundworker zu verwenden.

Parameter

swf:ByteArray — Ein ByteArray, das die Bytes einer gültigen SWF-Datei enthält
 
giveAppPrivileges:Boolean (default = false) — gibt an, ob der Worker in AIR Anwendungssandboxberechtigungen erhalten soll. Dieser Parameter wird in Flash Player ignoriert

Rückgabewerte
Worker — der neu erstellte Worker, falls das Erstellen erfolgreich ist. Der Rückgabewert null zeigt an, dass ein Worker nicht erstellt werden konnte, weil entweder der Kontext keine Parallelität unterstützt oder weil das Erstellen eines neuen Workers die Implementierungsgrenzen überschreiten würde.

Auslöser
SecurityError — wenn die SWF-Datei, deren Bytes an den swf-Parameter übergeben werden, aus einer anderen Sicherheitsdomäne stammen als die SWF-Datei, in der diese Methode aufgerufen wird

listWorkers

()Methode 
public function listWorkers():Vector.<Worker>

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 11.4, AIR 3.4

Ermöglicht den Zugriff auf die Workergruppe in der WorkerDomain, die zurzeit ausgeführt werden (die state-Eigenschaft der Worker-Instanz ist WorkerState.RUNNING).

Rückgabewerte
Vector.<Worker> — Ein Vektor von Worker-Instanzen, der die Worker enthält, die zurzeit ausgeführt werden.




[ X ]Warum auf Englisch?
Inhalt des ActionScript 3.0-Referenzhandbuchs wird in englischer Sprache angezeigt

Nicht alle Teile des ActionScript 3.0-Referenzhandbuchs wurden in alle Sprachen übersetzt. Wenn der Text zu einem Sprachelement nicht übersetzt wurde, wird er auf Englisch angezeigt. Zum Beispiel wurden die Informationen zur ga.controls.HelpBox-Klasse nicht in andere Sprachen übersetzt. In der deutschen Version des Referenzhandbuchs erscheint der Abschnitt zur ga.controls.HelpBox-Klasse deshalb auf Englisch.