Paquete | flash.display |
Clase | public class ShaderJob |
Herencia | ShaderJob EventDispatcher Object |
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Dos son las razones principales por las que se utiliza un sombreado en modo autónomo:
- Procesado de datos que no son de imagen: con una instancia de ShaderJob se controlan los valores de entrada y el uso de los resultados del sombreado. El sombreado puede devolver el resultado como datos binarios o como datos numéricos, en vez de hacerlo como datos de imagen.
- Procesado en segundo plano: algunos sombreados son complejos y requieren mucho tiempo para ejecutarse. La ejecución de un sombreado complejo en la ejecución principal de la aplicación puede ralentizar otros aspectos de la aplicación, como la interacción del usuario o la actualización de la información en pantalla. Si se utiliza una instancia de ShaderJob, el sombreado se puede ejecutar en segundo plano. Si se ejecuta de este modo, la operación de sombreado se lleva a cabo de forma independiente a la ejecución principal de la aplicación.
La propiedad (o parámetro constructor) shader
especifica la instancia de Shader que representa el sombreado utilizado para la operación. Proporcione cualquier parámetro o entrada que pueda esperar el sombreado mediante la instancia asociada de ShaderParameter o ShaderInput.
Antes de ejecutar una operación ShaderJob, debe proporcionar un objeto en el que escribir el resultado. Para ello, establézcalo como el valor de la propiedad target
. Una vez finalizada la operación del sombreado, el resultado se escribe en el objeto target
.
Para iniciar la operación de sombreado en segundo plano, llame al método start()
. Cuando termine la operación, el resultado se escribirá en el objeto target
. En ese momento, la instancia de ShaderJob distribuye un evento complete
para notificar a los detectores de la disponibilidad del resultado.
Para ejecutar un sombreado de forma sincrónica (esto es, sin que se ejecute en segundo plano), llame al método start()
y transfiera true
como argumento. El sombreado se ejecutará en el subproceso de ejecución y el código se detendrá hasta que finalice la operación. Cuando termine, el resultado se escribirá en el objeto target
. En ese momento, la aplicación continuará ejecutándose en la siguiente línea de código.
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 | ||
height : int
La altura de los datos del resultado en el objeto target si es una instancia de ByteArray o Vector.Instancia de <Number>. | ShaderJob | ||
progress : Number [solo lectura]
El progreso de un sombreado activo. | ShaderJob | ||
shader : Shader
El sombreado utilizado para la operación. | ShaderJob | ||
target : Object
El objeto en el que se escribe el resultado de la operación de sombreado. | ShaderJob | ||
width : int
La anchura de los datos del resultado en el objeto target si es una instancia de ByteArray o Vector.Instancia de <Number>. | ShaderJob |
Método | Definido por | ||
---|---|---|---|
ShaderJob | |||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registra un objeto de detector de eventos con un objeto EventDispatcher, de modo que el detector reciba la notificación de un evento. | EventDispatcher | ||
Cancela la operación de sombreado activa. | ShaderJob | ||
Distribuye un evento en el flujo del evento. | EventDispatcher | ||
Comprueba si el objeto EventDispatcher tiene detectores registrados para un tipo concreto de evento. | EventDispatcher | ||
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 | ||
Indica si existe la propiedad especificada y si es enumerable. | Object | ||
Elimina un detector del objeto EventDispatcher. | EventDispatcher | ||
Establece la disponibilidad de una propiedad dinámica para operaciones de bucle. | Object | ||
Inicia una operación de sombreado en modo sincrónico o asíncrono, en función del valor del parámetro waitForCompletion. | ShaderJob | ||
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 | ||
Comprueba si hay registrado un detector de eventos con este objeto EventDispatcher o con cualquiera de sus ascendientes para el tipo de evento concreto. | EventDispatcher |
Evento | Resumen | Definido por | ||
---|---|---|---|---|
[evento broadcast] Se distribuye cuando Flash Player o AIR pasan a estar activos. | EventDispatcher | |||
Se distribuye cuando un método ShaderJob que se ejecuta de forma asíncrona termina de procesar los datos con el sombreado. | ShaderJob | |||
[evento broadcast] Se distribuye cuando Flash Player o de AIR pasan a estar inactivos. | EventDispatcher |
height | propiedad |
height:int
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
La altura de los datos del resultado en el objeto target
si es una instancia de ByteArray o Vector.<Number>. El tamaño de la instancia de ByteArray o Vector.<Number> se aumenta si es necesario y se sobrescriben los datos existentes.
Implementación
public function get height():int
public function set height(value:int):void
progress | propiedad |
progress:Number
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
El progreso de un sombreado activo. Esta propiedad es un valor entre 0 y 1. Cero indica el valor inicial (0% completado). Uno indica que el sombreado ha finalizado su operación.
Si se llama al método cancel()
, esta propiedad pasa a ser undefined
y su valor ya no puede utilizarse con fiabilidad hasta que no se inicie de nuevo la operación de sombreado.
Implementación
public function get progress():Number
shader | propiedad |
shader:Shader
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
El sombreado utilizado para la operación. Se debe proporcionar cualquier entrada o parámetro esperado por el sombreado mediante la propiedad ShaderInput o ShaderParameter de la propiedad data
de la instancia de Shader. Debe proporcionarse la entrada con su objeto ShaderInput correspondiente, incluso si coincide con el objeto target
.
Para procesar un objeto ByteArray con un conjunto lineal de datos (en contraposición a datos de imagen), establezca la propiedad height
de la instancia correspondiente de ShaderInput con el valor 1 y width
con el número de los valores de coma flotante de 32 bits del objeto ByteArray. En este caso, la entrada del sombreado se debe definir con el tipo de datos image1
.
Implementación
public function get shader():Shader
public function set shader(value:Shader):void
Elementos de API relacionados
target | propiedad |
target:Object
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
El objeto en el que se escribe el resultado de la operación de sombreado. Este objeto debe ser una instancia de BitmapData, ByteArray o Vector.<Number>.
Implementación
public function get target():Object
public function set target(value:Object):void
width | propiedad |
width:int
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
La anchura de los datos del resultado en el objeto target
si es una instancia de ByteArray o Vector.<Number>. El tamaño de la instancia de ByteArray o Vector.<Number> se aumenta si es necesario y se sobrescriben los datos existentes.
Implementación
public function get width():int
public function set width(value:int):void
ShaderJob | () | Información sobre |
public function ShaderJob(shader:Shader = null, target:Object = null, width:int = 0, height:int = 0)
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Parámetros
shader:Shader (default = null ) — El sombreado que se utiliza en la operación.
| |
target:Object (default = null ) — El objeto en el que se escribe el resultado de la operación de sombreado. Este argumento debe ser una instancia de BitmapData, ByteArray o Vector.<Number>.
| |
width:int (default = 0 ) — La anchura de los datos del resultado en el objeto target si es una instancia de ByteArray o Vector.<Number>. El tamaño de la instancia de ByteArray o Vector.<Number> se aumenta si es necesario y se sobrescriben los datos existentes.
| |
height:int (default = 0 ) — La altura de los datos del resultado en el objeto target si es una instancia de ByteArray o Vector.<Number>. El tamaño de la instancia de ByteArray o Vector.<Number> se aumenta si es necesario y se sobrescriben los datos existentes.
|
cancel | () | método |
public function cancel():void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Cancela la operación de sombreado activa. Todos los datos de resultados ya calculados se descartan. No se distribuye el evento complete
.
Llamar a cancel()
varias veces no produce ningún efecto.
start | () | método |
public function start(waitForCompletion:Boolean = false):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Inicia una operación de sombreado en modo sincrónico o asíncrono, en función del valor del parámetro waitForCompletion
.
En modo asíncrono (cuando waitForCompletion
es false
), valor predeterminado), la ejecución de ShaderJob se realiza en segundo plano. La operación de sombreado no afecta a la respuesta de la visualización ni de otras operaciones. En modo asíncrono, la llamada a start()
devuelve un valor inmediatamente y el programa continúa con la siguiente línea de código. Cuando finaliza la operación asíncrona de sombreado, el resultado está disponible y se distribuye el evento complete
.
Sólo se puede ejecutar una operación ShaderJob en segundo plano cada vez. Las operaciones de sombreado se ponen en cola hasta el momento de su ejecución. Si llama al método start()
mientras se ejecuta una operación de sombreado, la operación adicional se añade al final de la cola. Más adelante, se ejecuta cuando le llegue su turno.
Para ejecutar una operación de sombreado en modo sincrónico, llame al método start()
con un valor true
para el parámetro waitForCompletion
(el único parámetro). El código se detiene temporalmente en el punto en que se llama a start()
hasta que finalice la operación de sombreado. En dicho punto, el resultado está disponible y la ejecución continúa con la siguiente línea de código.
Si llama al método start()
, la instancia de Shader de la propiedad shader
se copia internamente. La operación de sombreado utiliza la copia interna, no una referencia al sombreado original. Todos los cambios realizados en el objeto shader, como la modificación de los valores de los parámetros, la entrada o el código de bytes, no se aplican al sombreado copiado que se utiliza en el procesamiento del sombreado. Para incorporar los cambios en el procesamiento del sombreado, llame al método cancel()
(si es necesario) y vuelva a llamar al método start()
para reiniciar el procesamiento del sombreado.
Durante la ejecución de una operación de sombreado, el valor del objeto target
permanece invariable. Cuando finaliza la operación (y se distribuye el evento complete
en modo asíncrono), todo el resultado se escribe en el objeto target
de una vez. Si el objeto target
es una instancia de BitmapData y se lama a su método dispose()
antes de que finalice la operación, el evento complete
seguirá distribuyéndose en modo asíncrono. No obstante, los datos del resultado no se escriben en el objeto BitmapData, ya que se encuentra en modo de eliminación.
Parámetros
waitForCompletion:Boolean (default = false ) — Especifica si el sombreado se ejecuta en segundo plano (false , valor predeterminado) o en el programa principal de ejecución (true ).
|
Eventos
complete: — Se distribuye cuando finaliza la operación si se ha llamado al método start() con un argumento true para waitForCompletion .
|
Emite
ArgumentError — Cuando la propiedad target es null o no es una instancia de BitmapData, ByteArray o Vector. <Number>.
| |
ArgumentError — Si el sombreado especifica una entrada de imagen no suministrada.
| |
ArgumentError — Si es una instancia de ByteArray o Vector.<Number> que se utiliza como entrada, no se especifican las propiedades width y height para ShaderInput, o los valores especificados no coinciden con la cantidad de datos de los datos de entrada. Consulte la propiedad ShaderInput.input para obtener más información.
|
complete | Evento |
flash.events.ShaderEvent
propiedad ShaderEvent.type =
flash.events.ShaderEvent.COMPLETE
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Se distribuye cuando un método ShaderJob que se ejecuta de forma asíncrona termina de procesar los datos con el sombreado. Una instancia de ShaderJob se ejecuta de forma asíncrona cuando se llama al método start()
con un valor false
para el parámetro waitForCompletion
.
type
de un objeto de evento complete
.
Este evento tiene las propiedades siguientes:
Propiedad | Valor |
---|---|
bubbles | false |
bitmapData | El objeto BitmapData que contiene el resultado de la operación que ha finalizado (o null si el destino no era un objeto BitmapData). |
byteArray | El objeto ByteArray que contiene el resultado de la operación que ha finalizado (o null si el destino no era un objeto ByteArray). |
cancelable | false ; no hay ningún comportamiento predeterminado que cancelar. |
currentTarget | Objeto que procesa de forma activa el objeto de evento con un detector de eventos. |
target | El objeto ShaderJob que informa sobre la finalización. |
vector | La instancia de Vector.<Number> contiene el resultado de la operación que ha finalizado (o null si el destino no era una instancia de Vector.<Number>. |
Tue Jun 12 2018, 02:12 PM Z