Pacchetto | flash.system |
Classe | public final class WorkerDomain |
Ereditarietà | WorkerDomain Object |
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 11.4, AIR 3.4 |
Nota: l’uso dei worker per la contemporaneità di esecuzione è supportato in Flash Player e in AIR sulle piattaforme desktop. Per le piattaforme mobili la contemporaneità di esecuzione è supportata in AIR su Android, ma non su iOS. Potete usare la proprietà statica isSupported per verificare se la contemporaneità di esecuzione è supportata prima di utilizzarla.
Non è possibile creare istanze WorkerDomain direttamente chiamando la funzione di costruzione WorkerDomain()
. In un’applicazione può esistere una sola istanza WorkerDomain. Nei contesti che supportano l’uso dei worker per la contemporaneità di esecuzione, il runtime crea automaticamente il WorkerDomain all’avvio. Per accedere a tale istanza, utilizzate la proprietà statica current
.
Per creare una nuova istanza della classe Worker, usate il metodo createWorker()
. Per accedere alla serie di oggetti Worker attualmente in esecuzione, utilizzate il metodo listWorkers()
.
Elementi API correlati
Proprietà | Definito da | ||
---|---|---|---|
constructor : Object
Un riferimento all'oggetto classe o alla funzione di costruzione per una determinata istanza di oggetto. | Object | ||
current : WorkerDomain [statico] [sola lettura]
L’istanza WorkerDomain nella quale il codice è in esecuzione. | WorkerDomain | ||
isSupported : Boolean [statico] [sola lettura]
Indica se il contesto runtime corrente supporta gli oggetti WorkerDomain e Worker per l’esecuzione contemporanea del codice. | WorkerDomain |
Metodo | Definito da | ||
---|---|---|---|
Crea una nuova istanza Worker dai byte di un SWF. | WorkerDomain | ||
Indica se per un oggetto è definita una proprietà specifica. | Object | ||
Indica se un'istanza della classe Object si trova nella catena di prototipi dell'oggetto specificato come parametro. | Object | ||
Fornisce l’accesso alla serie di worker attualmente in esecuzione nel WorkerDomain (la proprietà state dell’istanza Worker è WorkerState.RUNNING). | WorkerDomain | ||
Indica se la proprietà specificata esiste ed è enumerabile. | Object | ||
Imposta la disponibilità di una proprietà dinamica per le operazioni cicliche. | Object | ||
Restituisce la rappresentazione in formato stringa di questo oggetto, formattato in base alle convenzioni specifiche per le versioni localizzate. | Object | ||
Restituisce la rappresentazione in formato stringa dell'oggetto specificato. | Object | ||
Restituisce il valore di base dell'oggetto specificato. | Object |
current | proprietà |
current:WorkerDomain
[sola lettura] Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 11.4, AIR 3.4 |
L’istanza WorkerDomain nella quale il codice è in esecuzione. È l’unico WorkerDomain presente nell’applicazione.
Implementazione
public static function get current():WorkerDomain
isSupported | proprietà |
isSupported:Boolean
[sola lettura] Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 11.4, AIR 3.4 |
Indica se il contesto runtime corrente supporta gli oggetti WorkerDomain e Worker per l’esecuzione contemporanea del codice.
Se la contemporaneità di esecuzione è disponibile, il valore di questa proprietà + true
.
Implementazione
public static function get isSupported():Boolean
createWorker | () | metodo |
public function createWorker(swf:ByteArray, giveAppPrivileges:Boolean = false):Worker
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 11.4, AIR 3.4 |
Crea una nuova istanza Worker
dai byte di un SWF.
Ogni worker viene creato da un’applicazione SWF isolata ed eseguito come tale. Per creare un’istanza Worker, dovete ottenere i byte del file SWF in un’istanza ByteArray e passarli a questo metodo. Sono possibili tre modi diversi per accedere ai byte di un file SWF a questo scopo:
Usare il metatag [Embed] per incorporare il file .swf nell’applicazione come 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(); }
Caricare un file SWF esterno mediante un 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(); }
Usare un singolo SWF sia come worker primordiale che come worker di background:
// 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 }
La creazione di un oggetto Worker mediante createWorker()
non avvia l’esecuzione del worker. Per avviare l’esecuzione del codice di un worker, chiamate il metodo start()
dell’oggetto Worker.
I worker sono utili perché limitano il rischio di riduzione della frequenza fotogrammi causata dal blocco del thread di rendering principale da parte di un altro codice. Tuttavia, i worker richiedono memoria aggiuntiva e risorse della CPU e possono di conseguenza avere un impatto sulle prestazioni generali dell’applicazione. Poiché ogni worker utilizza una propria istanza dalla macchina virtuale del runtime, anche il carico di lavoro di un worker di poca importanza può essere notevole. Quando usate i worker, provate il codice su tutte le piattaforme di destinazione per assicurarvi che il suo consumo delle risorse di sistema non sia eccessivo. Adobe consiglia di non utilizzare più di uno o due worker di background in uno scenario tipico.
Parametri
swf:ByteArray — Un ByteArray contenente i byte di un file SWF valido.
| |
giveAppPrivileges:Boolean (default = false ) — Indica se al worker devono essere assegnati i privilegi sandbox dell’applicazione in AIR. Questo parametro viene ignorato in Flash Player.
|
Worker — Il nuovo Worker, se la creazione viene eseguita correttamente. Il valore null , se restituito, indica che non è stato possibile creare un worker perché il contesto corrente non supporta la contemporaneità di esecuzione oppure perché la creazione di un nuovo worker supererebbe i limiti di implementazione.
|
Genera
SecurityError — Generato se il file SWF i cui byte vengono passati al parametro SWF appartiene a un dominio di sicurezza diverso dall’SWF nel quale il metodo viene chiamato.
|
listWorkers | () | metodo |
public function listWorkers():Vector.<Worker>
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 11.4, AIR 3.4 |
Fornisce l’accesso alla serie di worker attualmente in esecuzione nel WorkerDomain (la proprietà state
dell’istanza Worker è WorkerState.RUNNING
).
Vector.<Worker> — Un vettore di istanze Worker contenenti i worker attualmente in esecuzione.
|
Tue Jun 12 2018, 02:44 PM Z