Pacchetto | flash.display |
Classe | public class ShaderJob |
Ereditarietà | ShaderJob EventDispatcher Object |
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10, AIR 1.5 |
Vi sono due motivi principali per utilizzare uno shader in modalità autonoma:
- Elaborazione di dati non di immagine: utilizzando un'istanza ShaderJob potete controllare i valori di input e sulla modalità di utilizzo del risultato dello shader. Lo shader può restituire il risultato sotto forma di dati binari o dati numerici invece di dati immagine.
- Elaborazione in background: alcuni shader sono complessi e richiedono tempi di esecuzione molto lunghi. L'esecuzione di shader complessi nell'esecuzione principale di un'applicazione può rallentare altre parti dell'applicazione, ad esempio l'interazione dell'utente o l'aggiornamento dello schermo. Se utilizzate un'istanza ShaderJob, potete eseguire lo shader in background. Se lo shader viene eseguito in questo modo, l'esecuzione è separata dall'esecuzione principale dell'applicazione.
La proprietà shader
(o parametro della funzione di costruzione) specifica l'istanza Shader che rappresenta lo shader utilizzato per l'operazione. Per fornire gli eventuali parametri o l'input previsto dallo shader, potete utilizzare l'istanza ShaderParameter o ShaderInput associata.
Prima di eseguire un'operazione ShaderJob, dovete fornire un oggetto su cui scrivere il risultato, impostandolo come valore della proprietà target
. Al termine dell'operazione shader, il risultato viene scritto nell'oggetto target
.
Per iniziare un'operazione shader in background, chiamate il metodo start()
. Al termine dell'operazione, il risultato viene scritto nell'oggetto target
. A questo punto, l'istanza ShaderJob invia un evento complete
, informando i listener che il risultato è disponibile.
Per eseguire uno shader in modalità sincrona (cioè non in background), chiamate il metodo start()
e passate true
come argomento. Lo shader viene eseguito nel thread di esecuzione principale e il codice resta in pausa fino al completamento dell'operazione. Al termine, il risultato viene scritto nell'oggetto target
. A questo punto, l'applicazione continua l'elaborazione passando alla riga successiva del codice.
Altri esempi
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 | ||
height : int
L'altezza dei dati dei risultati in target, se è un'istanza ByteArray o Vector.<Number>. | ShaderJob | ||
progress : Number [sola lettura]
L'avanzamento di uno shader in esecuzione. | ShaderJob | ||
shader : Shader
Lo shader utilizzato per l'operazione. | ShaderJob | ||
target : Object
L'oggetto in cui viene scritto il risultato dell'operazione shader. | ShaderJob | ||
width : int
La larghezza dei dati dei risultati in target, se è ByteArray o Vector.<Number>. | ShaderJob |
Metodo | Definito da | ||
---|---|---|---|
ShaderJob | |||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registra un oggetto listener di eventi con un oggetto EventDispatcher, in modo che il listener riceva la notifica di un evento. | EventDispatcher | ||
Annulla l'operazione shader attualmente in esecuzione. | ShaderJob | ||
Invia un evento nel flusso di eventi. | EventDispatcher | ||
Verifica se per l'oggetto EventDispatcher sono presenti listener registrati per un tipo specifico di evento. | EventDispatcher | ||
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 | ||
Indica se la proprietà specificata esiste ed è enumerabile. | Object | ||
Rimuove un listener dall'oggetto EventDispatcher. | EventDispatcher | ||
Imposta la disponibilità di una proprietà dinamica per le operazioni cicliche. | Object | ||
Avvia un'operazione shader in modalità sincrona o asincrona, in base al valore del parametro waitForCompletion. | ShaderJob | ||
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 | ||
Verifica se un listener di eventi è registrato con questo oggetto EventDispatcher o qualsiasi suo antenato per il tipo di evento specificato. | EventDispatcher |
Evento | Riepilogo | Definito da | ||
---|---|---|---|---|
[evento di trasmissione] Inviato quando Flash Player o l'applicazione AIR ottiene lo stato di attivazione del sistema operativo ed entra nello stato attivo. | EventDispatcher | |||
Inviato quando un evento ShaderJob eseguito in modalità asincrona termina l'elaborazione dei dati utilizzando lo shader. | ShaderJob | |||
[evento di trasmissione] Inviato quando Flash Player o l'applicazione AIR perde l'attivazione del sistema operativo e sta entrando nello stato inattivo. | EventDispatcher |
height | proprietà |
height:int
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10, AIR 1.5 |
L'altezza dei dati dei risultati in target
, se è un'istanza ByteArray o Vector.Istanza <Number>. Le dimensioni dell'istanza ByteArray o Vector.<Number> vengono ingrandite, se necessario, e i dati esistenti vengono sovrascritti.
Implementazione
public function get height():int
public function set height(value:int):void
progress | proprietà |
progress:Number
[sola lettura] Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10, AIR 1.5 |
L'avanzamento di uno shader in esecuzione. Questa proprietà è un valore da 0 a 1. Zero è il valore iniziale (0% di completamento). Uno indica che lo shader ha completato l'operazione.
Se chiamate il metodo cancel()
, questa proprietà diventa undefined
e il relativo valore non potrà essere utilizzato in modo affidabile finché l'operazione shader non viene avviata di nuovo.
Implementazione
public function get progress():Number
shader | proprietà |
shader:Shader
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10, AIR 1.5 |
Lo shader utilizzato per l'operazione. Qualsiasi input o parametro previsto dallo shader deve essere fornito utilizzando la proprietà ShaderInput o ShaderParameter della proprietà data
dell'istanza Shader. Dovete fornire un input utilizzando la corrispondente proprietà ShaderInput, anche se è la stessa dell'oggetto target
.
Per elaborare un oggetto ByteArray contenente un array di dati lineare (anziché dati di immagine), impostate il corrispondente valore height
dell'istanza ShaderInput su 1 e width
sul numero di valori a virgola mobile a 32 bit in ByteArray. In tal caso, l'input nello shader deve essere definito con il tipo di dati image1
.
Implementazione
public function get shader():Shader
public function set shader(value:Shader):void
Elementi API correlati
target | proprietà |
target:Object
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10, AIR 1.5 |
L'oggetto in cui viene scritto il risultato dell'operazione shader. Questo oggetto deve essere BitmapData, ByteArray o Vector.Istanza <Number>.
Implementazione
public function get target():Object
public function set target(value:Object):void
width | proprietà |
width:int
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10, AIR 1.5 |
La larghezza dei dati dei risultati in target
, se è ByteArray o Vector.Istanza <Number>. Le dimensioni dell'istanza ByteArray o Vector.<Number> vengono ingrandite, se necessario, e i dati esistenti vengono sovrascritti.
Implementazione
public function get width():int
public function set width(value:int):void
ShaderJob | () | Funzione di costruzione |
public function ShaderJob(shader:Shader = null, target:Object = null, width:int = 0, height:int = 0)
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10, AIR 1.5 |
Parametri
shader:Shader (default = null ) — Lo shader da utilizzare per l'operazione.
| |
target:Object (default = null ) — L'oggetto in cui viene scritto il risultato dell'operazione shader. Questo argomento deve essere BitmapData, ByteArray o Vector.Istanza <Number>.
| |
width:int (default = 0 ) — La larghezza dei dati dei risultati in target , se è ByteArray o Vector.Istanza <Number>. Le dimensioni dell'istanza ByteArray o Vector.<Number> vengono ingrandite, se necessario, e i dati esistenti vengono sovrascritti.
| |
height:int (default = 0 ) — L'altezza dei dati dei risultati in target , se è un'istanza ByteArray o Vector.Istanza <Number>. Le dimensioni dell'istanza ByteArray o Vector.<Number> vengono ingrandite, se necessario, e i dati esistenti vengono sovrascritti.
|
cancel | () | metodo |
public function cancel():void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10, AIR 1.5 |
Annulla l'operazione shader attualmente in esecuzione. Tutti i dati dei risultati che non sono stati calcolati vengono eliminati. L'evento complete
non viene inviato.
La chiamata ripetuta a cancel()
non ha alcun effetto aggiuntivo.
start | () | metodo |
public function start(waitForCompletion:Boolean = false):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10, AIR 1.5 |
Avvia un'operazione shader in modalità sincrona o asincrona, in base al valore del parametro waitForCompletion
.
In modalità asincrona (se waitForCompletion
è false
), cioè quella predefinita, l'esecuzione ShaderJob avviene in background. L'operazione shader non ha effetti sulla reattività della visualizzazione o di altre operazioni. In modalità asincrona start()
viene restituito immediatamente e il programma prosegue con la riga successiva del codice. Quando l'operazione shader asincrona è stata completata, il risultato è disponibile e viene inviato l'evento complete
.
Viene eseguita una sola operazione ShaderJob in background alla volta. Le operazioni shader vengono mantenute in coda fino alla loro esecuzione. Se chiamate il metodo start()
mentre è in esecuzione un'operazione shader, l'ulteriore operazione viene aggiunta alla fine della coda. In seguito, quando arriva il momento, viene eseguita.
Per eseguire un'operazione shader in modalità sincrona, chiamate start()
con un valore true
per il parametro waitForCompletion
(l'unico parametro). Il codice entra in pausa quando viene chiamato start()
e fino al completamento dell'operazione shader. A questo punto, il risultato è disponibile e l'esecuzione continua l'elaborazione passando alla riga successiva del codice.
Quando chiamate il metodo start()
, l'istanza Shader nella proprietà shader
viene copiata internamente. L'operazione shader utilizza tale copia interna, non un riferimento allo shader originale. Qualsiasi modifica apportata allo shader, ad esempio la modifica del valore di un parametro, dell'input o del codice byte, non verrà applicata alla copia dello shader usata per l'elaborazione dello shader. Per incorporare le modifiche dello shader nel relativo processo, chiamate il metodo cancel()
(se necessario) e chiamate di nuovo il metodo start()
per riavviare l'elaborazione dello shader.
Mentre è in esecuzione un'operazione shader, il valore dell'oggetto target
non viene modificato. Quando l'operazione termina e viene inviato l'evento complete
in modalità asincrona, l'intero risultato viene scritto contemporaneamente nell'oggetto target
. Se l'oggetto target
è un'istanza BitmapData e il metodo dispose()
viene chiamato prima che l'operazione termini, l'evento complete
viene inviato ancora in modalità asincrona. I dati dei risultati, tuttavia, non vengono scritti nell'oggetto BitmapData, in quanto il suo stato è non disponibile.
Parametri
waitForCompletion:Boolean (default = false ) — Specifica se eseguire lo shader in background (false , valore predefinito) o come programma principale (true ).
|
Eventi
complete: — Inviato quando termina l'operazione, se il metodo start() viene chiamato con un argomento waitForCompletion pari a true .
|
Genera
ArgumentError — Quando la proprietà target è null o non è BitmapData, ByteArray o Vector.Istanza <Number>.
| |
ArgumentError — Quando lo shader specifica un input di immagine che non viene fornito.
| |
ArgumentError — Quando è un oggetto ByteArray o Vector.L'istanza <Number> viene utilizzata come input e le proprietà width e height non sono specificate per l'oggetto ShaderInput oppure i valori specificati non corrispondono alla quantità dei dati nell'oggetto di input. Per ulteriori informazioni, fate riferimento alla proprietà ShaderInput.input .
|
complete | Evento |
flash.events.ShaderEvent
proprietà ShaderEvent.type =
flash.events.ShaderEvent.COMPLETE
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10, AIR 1.5 |
Inviato quando un evento ShaderJob eseguito in modalità asincrona termina l'elaborazione dei dati utilizzando lo shader. Un'istanza ShaderJob viene eseguita in modalità asincrona quando il metodo start()
viene chiamato con un valore false
per il parametro waitForCompletion
.
type
di un oggetto evento complete
.
Questo evento ha le seguenti proprietà:
Proprietà | Valore |
---|---|
bubbles | false |
bitmapData | L'oggetto BitmapData contenente il risultato dell'operazione che è stata completata (o null se la destinazione non era un oggetto BitmapData). |
byteArray | L'oggetto ByteArray contenente il risultato dell'operazione che è stata completata (o null se la destinazione non era un oggetto ByteArray). |
cancelable | false ; non è presente alcun comportamento predefinito da annullare. |
currentTarget | L'oggetto che elabora attivamente l'oggetto event con un listener di eventi. |
target | L'oggetto ShaderJob che segnala il completamento. |
vector | L'istanza Vector.<Number> contenente il risultato dell'operazione che è stata completata (o null se la destinazione non era un'istanza Vector.<Number>). |
Tue Jun 12 2018, 02:44 PM Z