Pakket | flash.system |
Klasse | public final class WorkerDomain |
Overerving | WorkerDomain Object |
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 11.4, AIR 3.4 |
Opmerking: het gebruik van workers voor gelijktijdige uitvoering wordt zowel ondersteund in Flash Player als in AIR op desktopplatforms. Voor mobiele platforms wordt gelijktijdige uitvoering ondersteund in AIR op Android, maar niet in AIR op iOS. Met de statische eigenschap isSupported kunt u controleren of gelijktijdige uitvoering wordt ondersteund, voordat u dit gaat uitproberen.
U kunt niet rechtstreeks WorkerDomain-instanties maken door de WorkerDomain()
-constructor aan te roepen. Er is slechts één enkele WorkerDomain-instantie voor een toepassing. Bij systeemcontexten waarin het gelijktijdige gebruik van workers wordt ondersteund, wordt het WorkerDomain bij het opstarten automatisch door de runtime gemaakt. Via de statische eigenschap current
hebt u toegang tot die instantie.
Als u een nieuwe instantie van de Worker-klasse wilt maken, gebruikt u de methode createWorker()
. Als u toegang wilt tot de set met Worker-objecten die gelijktijdig worden uitgevoerd, gebruikt u de methode listWorkers()
.
Verwante API-elementen
Eigenschap | Gedefinieerd door | ||
---|---|---|---|
constructor : Object
Verwijzing naar het klasseobject of de constructorfunctie van een bepaalde objectinstantie. | Object | ||
current : WorkerDomain [statisch] [alleen-lezen]
De WorkerDomain-instantie waarin de code momenteel wordt uitgevoerd. | WorkerDomain | ||
isSupported : Boolean [statisch] [alleen-lezen]
Geeft aan of de huidige context van de runtime ondersteuning biedt voor gelijktijdige uitvoering van de WorkerDomain- en Worker-objectcode. | WorkerDomain |
Methode | Gedefinieerd door | ||
---|---|---|---|
Maakt een nieuwe Worker-instantie op basis van de bytes in een SWF-bestand. | WorkerDomain | ||
Geeft aan of voor een object een opgegeven eigenschap is gedefinieerd. | Object | ||
Geeft aan of een instantie van de klasse Object zich in de prototypeketen van het object bevindt dat als parameter is opgegeven. | Object | ||
Biedt toegang tot de set met workers in het WorkerDomain die gelijktijdig worden uitgevoerd (de state-eigenschap van de Worker-instantie is WorkerState.RUNNING). | WorkerDomain | ||
Geeft aan of de opgegeven eigenschap bestaat en kan worden opgesomd. | Object | ||
Stelt de beschikbaarheid van een dynamische eigenschap voor lusbewerkingen in. | Object | ||
Geeft de tekenreeksweergave van dit object weer, geformatteerd volgens de locatiespecifieke conventies. | Object | ||
Retourneert een tekenreeksrepresentatie van het opgegeven object. | Object | ||
Retourneert de primitieve waarde van het opgegeven object. | Object |
current | eigenschap |
current:WorkerDomain
[alleen-lezen] Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 11.4, AIR 3.4 |
De WorkerDomain-instantie waarin de code momenteel wordt uitgevoerd. Dit is het enige WorkerDomain in de toepassing.
Implementatie
public static function get current():WorkerDomain
isSupported | eigenschap |
isSupported:Boolean
[alleen-lezen] Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 11.4, AIR 3.4 |
Geeft aan of de huidige context van de runtime ondersteuning biedt voor gelijktijdige uitvoering van de WorkerDomain- en Worker-objectcode.
Als gelijktijdige uitvoering beschikbaar is, wordt deze eigenschap ingesteld op true
.
Implementatie
public static function get isSupported():Boolean
createWorker | () | methode |
public function createWorker(swf:ByteArray, giveAppPrivileges:Boolean = false):Worker
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 11.4, AIR 3.4 |
Maakt een nieuwe Worker
-instantie op basis van de bytes in een SWF-bestand.
Elke worker is gemaakt op basis van een geïsoleerde SWF-toepassing en wordt ook als zodanig uitgevoerd. Als u een Worker-instantie wilt maken, moet u de bytes van het SWF-bestand ophalen als ByteArray-instantie en doorgeven aan deze methode. Er zijn drie manieren om de bytes van een SWF-bestand op te halen:
Gebruik de [Embed]-metatag om het SWF-bestand als een ByteArray in te sluiten in de toepassing:
// 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(); }
Laad een extern SWF-bestand met behulp van 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(); }
Gebruik een enkel SWF-bestand voor zowel de 'primordial worker' als voor de worker op de achtergrond.
// 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 }
Als u een Worker-object maakt met behulp van createWorker()
, wordt de worker niet automatisch uitgevoerd. Als u de code van de worker wilt uitvoeren, moet u de methode start()
van het Worker-object aanroepen.
Workers zijn handig omdat het risico op een tragere framesnelheid doordat de hoofdthread voor rendering wordt geblokkeerd door andere code, wordt verkleind. Workers vereisen echter ook extra systeemgeheugen en CPU-gebruik, en dat gaat soms ten koste van de algehele prestaties van de toepassing. Aangezien elke worker een eigen instantie van de runtime-VM gebruikt, kan zelfs een eenvoudige worker leiden tot een aanzienlijke overhead. Wanneer u workers gebruikt, moet u uw code dan ook testen op alle doelplatforms om te voorkomen dat het systeem niet te zwaar wordt belast. Adobe raadt aan dat u niet meer dan een of twee workers op de achtergrond gebruikt in een typisch scenario.
Parameters
swf:ByteArray — Een ByteArray met de bytes van een geldig SWF-bestand
| |
giveAppPrivileges:Boolean (default = false ) — Geeft aan of de worker privileges krijgt voor de toepassingssandbox in AIR. Deze parameter wordt genegeerd in Flash Player
|
Worker — de nieuwe worker indien deze kan worden gemaakt. Als de waarde null wordt geretourneerd, kan de worker niet worden gemaakt omdat de huidige systeemcontext geen ondersteuning biedt voor gelijktijdige uitvoering, of omdat het maken van een nieuwe worker de implementatielimieten zou overschrijden.
|
Gegenereerde uitzondering
SecurityError — als het SWF-bestand waarvan de bytes worden doorgegeven aan de swf -parameter, uit een ander beveiligingsdomein komt dan het SWF-bestand waarin deze methode wordt aangeroepen
|
listWorkers | () | methode |
public function listWorkers():Vector.<Worker>
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 11.4, AIR 3.4 |
Biedt toegang tot de set met workers in het WorkerDomain die gelijktijdig worden uitgevoerd (de state
-eigenschap van de Worker-instantie is WorkerState.RUNNING
).
Vector.<Worker> — Een vector met Worker-instanties waarin de workers zijn opgenomen die momenteel worden uitgevoerd.
|
Wed Jun 13 2018, 11:42 AM Z