Paquete | flash.system |
Clase | public final class WorkerDomain |
Herencia | WorkerDomain Object |
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11.4, AIR 3.4 |
Nota: el uso de programas de trabajo para simultaneidad se admite en Flash Player y en plataformas de AIR para escritorio. En las plataformas móviles, la simultaneidad se admite en AIR en Android, pero no en AIR en iOS. Se puede utilizar la propiedad estática isSupported para comprobar si se admite la simultaneidad antes de intentar usarla.
No es posible crear instancias de WorkerDomain directamente llamando al constructor WorkerDomain()
. Únicamente hay una sola instancia de WorkerDomain para una aplicación. En contextos en los que se admite la simultaneidad usar programas de trabajo, el motor de ejecución crea automáticamente el elemento WorkerDomain en el inicio. Para acceder a la instancia, utilice la propiedad estática current
.
Para crear una nueva instancia de la clase Worker, utilice el método createWorker()
. Para acceder al conjunto de objetos Worker que se están ejecutando actualmente, utilice el método listWorkers()
.
Elementos de API relacionados
Propiedad | Definido por | ||
---|---|---|---|
constructor : Object
Una referencia a la clase de objeto o función constructora para una instancia de objeto determinada. | Object | ||
current : WorkerDomain [estática] [solo lectura]
La instancia de WorkerDomain en la que se está ejecutando actualmente el código. | WorkerDomain | ||
isSupported : Boolean [estática] [solo lectura]
Indica si el contexto del motor de ejecución actual admite los objetos WorkerDomain y Worker para ejecución simultánea de código. | WorkerDomain |
Método | Definido por | ||
---|---|---|---|
Crea una nueva instancia de Worker a partir de los bytes de un swf. | WorkerDomain | ||
Indica si un objeto tiene definida una propiedad especificada. | Object | ||
Indica si hay una instancia de la clase Object en la cadena de prototipo del objeto especificado como parámetro. | Object | ||
Proporciona acceso al conjunto de programas de trabajo de WorkerDomain que están actualmente en ejecución (la propiedad state de la instancia de Worker es WorkerState.RUNNING). | WorkerDomain | ||
Indica si existe la propiedad especificada y si es enumerable. | Object | ||
Establece la disponibilidad de una propiedad dinámica para operaciones de bucle. | Object | ||
Devuelve la representación de cadena de este objeto, con formato según las convenciones específicas de configuración regional. | Object | ||
Devuelve la representación de cadena del objeto especificado. | Object | ||
Devuelve el valor simple del objeto especificado. | Object |
current | propiedad |
current:WorkerDomain
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11.4, AIR 3.4 |
La instancia de WorkerDomain en la que se está ejecutando actualmente el código. Se trata de la única instancia de WorkerDomain en la aplicación.
Implementación
public static function get current():WorkerDomain
isSupported | propiedad |
isSupported:Boolean
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11.4, AIR 3.4 |
Indica si el contexto del motor de ejecución actual admite los objetos WorkerDomain y Worker para ejecución simultánea de código.
Si la simultaneidad está disponible, el valor de esta propiedad es true
.
Implementación
public static function get isSupported():Boolean
createWorker | () | método |
public function createWorker(swf:ByteArray, giveAppPrivileges:Boolean = false):Worker
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11.4, AIR 3.4 |
Crea una nueva instancia de Worker
a partir de los bytes de un swf.
Cada programa de trabajo se crea a partir de una aplicación swf aislada y se ejecuta en ella. Para crear una instancia de Worker, debe obtener los bytes del archivo SWF como una instancia de ByteArray y transferirlo a este método. Hay tres formas comunes de acceder a los bytes de un swf para este fin:
Utilizar la metaetiqueta [Embed] para incorporar el archivo .swf en la aplicación como un 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(); }
Cargar un archivo SWF externo con 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(); }
Utilizar un solo swf como programa de trabajo primordial y de segundo plano:
// 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 }
Crear un objeto Worker con createWorker()
no inicia la ejecución del objeto. Para iniciar la ejecución del código de un programa de trabajo, debe llamar al método start()
del objeto Worker.
Los programas de trabajo son útiles, ya que reducen las posibilidades de pérdidas de velocidad de fotogramas debidas al bloqueo del subproceso principal por parte de otro código. No obstante, los programas de trabajo requieren memoria adicional del sistema y mayor uso de CPU, y esto puede afectar significativamente al rendimiento general de la aplicación. Dado que cada programa de trabajo utiliza su propia instancia de la máquina virtual del motor de ejecución, incluso la sobrecarga de un programa de trabajo trivial puede ser muy grande. Cuando utilice programas de trabajo, pruebe el código en todas las plataformas de destino para garantizar que no exigen demasiados recursos de uso del sistema. Adobe recomienda no utilizar más de uno o dos programas de trabajo en segundo plano en un escenario típico.
Parámetros
swf:ByteArray — Un ByteArray que contiene los bytes de un swf válido
| |
giveAppPrivileges:Boolean (default = false ) — indica si el programa de trabajo debe tener privilegios de entorno limitado de la aplicación en AIR. Flash Player no tiene en cuenta este parámetro
|
Worker — el objeto Worker recién creado si la creación se realiza correctamente. Un valor devuelto null incida que el programa de trabajo no se ha podido crear bien porque el contexto actual no admite simultaneidad o porque la creación del nuevo programa de trabajo superaría los límites de la implementación.
|
Emite
SecurityError — si el swf cuyos bytes se transfieren al parámetro swf proviene de un dominio de seguridad distinto del dominio del swf en el que se llama a este método
|
listWorkers | () | método |
public function listWorkers():Vector.<Worker>
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11.4, AIR 3.4 |
Proporciona acceso al conjunto de programas de trabajo de WorkerDomain que están actualmente en ejecución (la propiedad state
de la instancia de Worker es WorkerState.RUNNING
).
Vector.<Worker> — Un vector de instancias de Worker que contiene programas de trabajo actualmente en ejecución.
|
Tue Jun 12 2018, 02:12 PM Z