Paket | flash.system |
Klass | public final class WorkerDomain |
Arv | WorkerDomain Object |
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 11.4, AIR 3.4 |
Obs! Att använda arbetare för samtidighet stöds i både Flash Player och i AIR på datorplattformar. För mobila plattformar stöds samtidighet i AIR på Android, men inte i AIR på iOS. Du kan använda den statiska egenskapen isSupported för att kontrollera om samtidighet stöds innan du försöker använda den.
Du kan inte skapa WorkerDomain-förekomster direkt genom att anropa WorkerDomain()
-konstruktorn. Det finns endast en WorkerDomain-instans per program. I sammanhang där arbetare för samtidighet kan användas, skapas i miljön automatiskt WorkerDomain när den startas. Du har åtkomst till instansen via den statiska egenskapen current
.
Om du vill skapa en ny instans av klassen Worker ska du använda metoden createWorker()
. Om du vill ha åtkomst till den uppsättning Worker-objekt som körs för närvarande ska du använda metoden listWorkers()
.
Relaterade API-element
Egenskap | Definieras med | ||
---|---|---|---|
constructor : Object
En referens till klassobjektet eller konstruktorfunktionen för en given objektinstans. | Object | ||
current : WorkerDomain [statisk] [skrivskyddad]
WorkerDomain-instansen där koden för närvarande körs. | WorkerDomain | ||
isSupported : Boolean [statisk] [skrivskyddad]
Anger om det aktuella miljösammanhanget har stöd för objekten WorkerDomain och Worker vid samtidig kodkörning. | WorkerDomain |
Metod | Definieras med | ||
---|---|---|---|
Skapar en ny Worker-instans från byte i en swf-fil. | WorkerDomain | ||
Anger om det finns en egenskap angiven för ett objekt. | Object | ||
Anger om en instans av klassen Object finns i prototypkedjan för objektet som anges som parameter. | Object | ||
Ger åtkomst till en uppsättning arbetare i den WorkerDomain som körs för närvarande (Worker-instansens state-egenskap är WorkerState.RUNNING). | WorkerDomain | ||
Anger om den angivna egenskapen finns och är uppräkningsbar. | Object | ||
Anger tillgänglighet för en dynamisk egenskap för slingåtgärder. | Object | ||
Returnerar det här objektets strängrepresentation, formaterad i enlighet med språkspecifika konventioner. | Object | ||
Returnerar det angivna objektets strängbeteckning. | Object | ||
Returnerar det angivna objektets primitiva värde. | Object |
current | egenskap |
current:WorkerDomain
[skrivskyddad] Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 11.4, AIR 3.4 |
WorkerDomain-instansen där koden för närvarande körs. Detta är den enda WorkerDomain-förekomsten i programmet.
Implementering
public static function get current():WorkerDomain
isSupported | egenskap |
isSupported:Boolean
[skrivskyddad] Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 11.4, AIR 3.4 |
Anger om det aktuella miljösammanhanget har stöd för objekten WorkerDomain och Worker vid samtidig kodkörning.
Om samtidighet är tillgänglig är detta egenskapsvärde true
.
Implementering
public static function get isSupported():Boolean
createWorker | () | metod |
public function createWorker(swf:ByteArray, giveAppPrivileges:Boolean = false):Worker
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 11.4, AIR 3.4 |
Skapar en ny Worker
-instans från byte i en swf-fil.
Varje arbetare skapas från och körs som ett isolerat swf-program. Om du vill skapa en Worker-instans hämtar du byte från SWF-filen som en ByteArray-förekomst och skickar den till den här metoden. Det finns tre vanliga sätt att få åtkomst till byte i en swf-fil för detta ändamål:
Använd metataggen [Embed] för att bädda in swf-filen i programmet som en 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(); }
Läs in en extern SWF-fil med en 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(); }
Använd en SWF-fil eftersom både den primitiva arbetaren och bakgrundsarbetaren:
// 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 }
Att skapa ett Worker-objekt med createWorker()
innebär inte att körningen av arbetaren kommer att starta. Om du vill starta körnigen av kod för en arbetare anropar du Worker-objektets start()
-metod.
Arbetare är värdefulla eftersom de minskar riskerna för bildrutebortfall på grund av att huvudåtergivningstråden blockerats av annan kod. Emellertid kräver arbetare mer systemminne och processorkapacitet vilket kan påverka programmets generella prestanda negativt. Eftersom varje arbetare använder egna instanser av den virtuella miljön kan även pålägget för en enkel arbetare vara stort. När du använder arbetare ska du testa koden på alla målplattformar för att försäkra dig om att inte belastningen på systemet blir för stor. Adobe rekommenderar att du använder mer än en eller två bakgrundsarbetare i vanliga situationer.
Parametrar
swf:ByteArray — En ByteArray om innehåller byte för en giltig swf-fil
| |
giveAppPrivileges:Boolean (default = false ) — anger om arbetaren ska få behörigheter till programsandlådan i AIR. Denna parameter ignoreras i Flash Player
|
Worker — den nyligen skapade Worker-förekomsten om den kunde skapas. Returvärdet null anger att en arbetare inte kunde skapas antingen på grund av att det aktuella sammanhanget inte har stöd för samtidighet eller på grund av att om en ny arbetare skapades skulle implementeringsgränserna överskridas.
|
Utlöser
SecurityError — om den swf-fil vars byte skickas till parametern swf kommer från en annan säkerhetsdomän, kommer swf-filen i vilken den här metoden finns att anropas
|
listWorkers | () | metod |
public function listWorkers():Vector.<Worker>
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 11.4, AIR 3.4 |
Ger åtkomst till en uppsättning arbetare i den WorkerDomain som körs för närvarande (Worker-instansens state
-egenskap är WorkerState.RUNNING
).
Vector.<Worker> — En vektor av Worker-instanser som innehåller de arbetare som körs för närvarande.
|
Tue Jun 12 2018, 01:40 PM Z