Paket | flash.system |
Klasse | public final class WorkerDomain |
Vererbung | WorkerDomain Object |
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 11.4, AIR 3.4 |
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
Eigenschaft | Definiert von | ||
---|---|---|---|
constructor : 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 |
Methode | Definiert von | ||
---|---|---|---|
Erstellt eine neue Worker-Instanz aus den Bytes einer SWF-Datei. | WorkerDomain | ||
Gibt an, ob für ein Objekt eine bestimmte Eigenschaft definiert wurde. | Object | ||
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 | ||
Gibt an, ob die angegebene Eigenschaft vorhanden ist und durchlaufen werden kann. | Object | ||
Legt die Verfügbarkeit einer dynamischen Eigenschaft für Schleifenoperationen fest. | Object | ||
Gibt die Stringdarstellung dieses Objekts zurück, formatiert entsprechend den Konventionen des Gebietsschemas. | Object | ||
Gibt das angegebene Objekt als String zurück. | Object | ||
Gibt den Grundwert des angegebenen Objekts zurück. | Object |
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
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
|
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
).
Vector.<Worker> — Ein Vektor von Worker-Instanzen, der die Worker enthält, die zurzeit ausgeführt werden.
|
Tue Jun 12 2018, 10:04 AM Z