Package | flash.display |
Classe | public class ShaderJob |
Héritage | ShaderJob EventDispatcher Object |
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 10, AIR 1.5 |
Il existe deux raisons principales à l’utilisation d’un shader en mode autonome :
- Traitement des données non graphiques : l’utilisation d’une occurrence de ShaderJob vous permet de contrôler les valeurs d’entrée, ainsi que la méthode d’utilisation du résultat du shader. Le shader peut renvoyer le résultat sous forme de données binaires ou numériques plutôt que sous forme de données image.
- Traitement en arrière-plan : certains shaders sont complexes et leur exécution prend un certain temps. L’exécution d’un shader complexe dans la ligne d’exécution principale d’une application peut ralentir les autres parties de l’application, telles que l’interaction de l’utilisateur ou la mise à jour de l’écran. L’utilisation d’une occurrence de ShaderJob vous permet d’exécuter le shader dans l’arrière-plan. Lorsque le shader est exécuté de cette manière, l’opération de shader est indépendante de l’exécution principale de l’application.
La propriété shader
(ou paramètre constructeur) spécifie l’occurrence Shader représentant le shader utilisé pour l’opération. Vous fournissez les paramètres ou les entrées attendues par le shader à l’aide de l’occurrence de ShaderParameter ou de ShaderInput associée.
Avant l’exécution d’une opération ShaderJob, vous fournissez un objet dans lequel le résultat est écrit, en le définissant comme la valeur de la propriété target
. Une fois l’opération de shader terminée, le résultat est écrit dans l’objet target
.
Pour commencer une opération de shader dans l’arrière-plan, appelez la méthode start()
. Une fois l’opération terminée, le résultat est écrit dans l’objet target
. A ce stade, l’occurrence ShaderJob déclenche un événement complete
, qui indique aux écouteurs que le résultat est disponible.
Pour exécuter un shader de façon synchrone (c’est-à-dire qui ne s’exécute pas dans l’arrière-plan), appelez la méthode start()
, puis transmettez true
en tant qu’argument. Le shader s’exécute dans la thread principale et votre code s’interrompt jusqu’à la fin de l’opération. Lorsque l’opération est terminée, le résultat est écrit dans l’objet target
. A ce stade, l’application continue de s’exécuter à la ligne de code suivante.
Plus d’exemples
Eléments de l’API associés
Propriété | Défini par | ||
---|---|---|---|
constructor : Object
Référence à l’objet de classe ou à la fonction constructeur d’une occurrence donnée d’un objet. | Object | ||
height : int
Hauteur des données du résultat dans l’objet target dans le cas d’une occurrence de ByteArray ou de Vector.<Number>. | ShaderJob | ||
progress : Number [lecture seule]
Progression d’un shader en cours d’exécution. | ShaderJob | ||
shader : Shader
Shader utilisé pour l’opération. | ShaderJob | ||
target : Object
Objet dans lequel est écrit le résultat de l’opération du shader. | ShaderJob | ||
width : int
Largeur des données du résultat dans l’objet target dans le cas d’une occurrence de ByteArray ou de Vector.<Number>. | ShaderJob |
Méthode | Défini par | ||
---|---|---|---|
ShaderJob | |||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Enregistre un objet écouteur d’événement auprès d’un objet EventDispatcher afin que l’écouteur soit averti d’un événement. | EventDispatcher | ||
Annule l’opération de shader en cours d’exécution. | ShaderJob | ||
Distribue un événement dans le flux d’événements. | EventDispatcher | ||
Vérifie si des écouteurs sont enregistrés auprès de l’objet EventDispatcher pour un type spécifique d’événement. | EventDispatcher | ||
Indique si la propriété spécifiée d’un objet est définie. | Object | ||
Indique si une occurrence de la classe Object figure dans la chaîne de prototype de l’objet spécifié en tant que paramètre. | Object | ||
Indique si la propriété spécifiée existe et est énumérable. | Object | ||
Supprime un écouteur de l’objet EventDispatcher. | EventDispatcher | ||
Définit la disponibilité d’une propriété dynamique pour les opérations en boucle. | Object | ||
Lance une opération de shader en mode synchrone ou asynchrone selon la valeur du paramètre waitForCompletion. | ShaderJob | ||
Renvoie la représentation de chaîne de cet objet, formatée selon les paramètres régionaux en vigueur. | Object | ||
Renvoie la représentation sous forme de chaîne de l’objet spécifié. | Object | ||
Renvoie la valeur primitive de l’objet spécifié. | Object | ||
Vérifie si un écouteur d’événement est enregistré auprès de cet objet EventDispatcher ou de ses ancêtres pour le type d’événement spécifié. | EventDispatcher |
Evénement | Synthèse | Défini par | ||
---|---|---|---|---|
[Evénement de diffusion] Distribué lorsque l’application Flash Player obtient le focus du système d’exploitation et devient active. | EventDispatcher | |||
Distribué lorsqu’un ShaderJob qui s’exécute de façon asynchrone achève de traiter les données à l’aide du shader. | ShaderJob | |||
[Evénement de diffusion] Distribué lorsque l’application Flash Player ou AIR perd le focus du système d’exploitation et devient inactive. | EventDispatcher |
height | propriété |
height:int
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 10, AIR 1.5 |
Largeur des données du résultat dans l’objet target
dans le cas d’une occurrence de ByteArray ou de Vector.<Number>. La taille de l’occurrence de ByteArray ou de Vector.<Number> est élargie au besoin et les données existantes remplacées.
Implémentation
public function get height():int
public function set height(value:int):void
progress | propriété |
progress:Number
[lecture seule] Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 10, AIR 1.5 |
Progression d’un shader en cours d’exécution. Cette propriété est une valeur comprise entre 0 et 1. La valeur initiale est zéro (0 %). 1 indique que le shader a terminé son opération.
Si la méthode cancel()
est appelée, cette propriété devient undefined
et sa valeur ne peut pas être utilisée de façon fiable jusqu’à ce que l’opération du shader redémarre.
Implémentation
public function get progress():Number
shader | propriété |
shader:Shader
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 10, AIR 1.5 |
Shader utilisé pour l’opération. Les entrées ou paramètres attendus par le shader doivent être fournis à l’aide de la propriété ShaderInput ou ShaderParameter de la propriété data
de l’occurrence Shader. L’entrée doit être fournie par sa propriété ShaderInput correspondante si c’est la même que l’objet target
.
Pour traiter un ByteArray contenant un tableau de données linéaire (par opposition aux données image), définissez la propriété height
de l’occurrence ShaderInput sur 1 et la propriété width
sur les valeurs en virgule flottante 32 bits du ByteArray. Dans ce cas, l’entrée dans le shader doit être définie avec le type de données image1
.
Implémentation
public function get shader():Shader
public function set shader(value:Shader):void
Eléments de l’API associés
target | propriété |
target:Object
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 10, AIR 1.5 |
Objet dans lequel est écrit le résultat de l’opération du shader. Cet objet doit être une occurrence de BitmapData, de ByteArray ou de Vector.<Number>.
Implémentation
public function get target():Object
public function set target(value:Object):void
width | propriété |
width:int
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 10, AIR 1.5 |
Largeur des données du résultat dans l’objet target
dans le cas d’une occurrence de ByteArray ou de Vector.<Number>. La taille de l’occurrence de ByteArray ou de Vector.<Number> est élargie au besoin et les données existantes remplacées.
Implémentation
public function get width():int
public function set width(value:int):void
ShaderJob | () | Constructeur |
public function ShaderJob(shader:Shader = null, target:Object = null, width:int = 0, height:int = 0)
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 10, AIR 1.5 |
Paramètres
shader:Shader (default = null ) — Shader à utiliser pour l’opération.
| |
target:Object (default = null ) — Objet dans lequel est écrit le résultat de l’opération du shader. Cet argument doit être une occurrence de BitmapData, de ByteArray ou de Vector.<Number>.
| |
width:int (default = 0 ) — Largeur des données du résultat dans l’objet target dans le cas d’une occurrence de ByteArray ou de Vector.<Number>. La taille de l’occurrence de ByteArray ou de Vector.<Number> est élargie au besoin et les données existantes remplacées.
| |
height:int (default = 0 ) — Largeur des données du résultat dans l’objet target dans le cas d’une occurrence de ByteArray ou de Vector.<Number>. La taille de l’occurrence de ByteArray ou de Vector.<Number> est élargie au besoin et les données existantes remplacées.
|
cancel | () | méthode |
public function cancel():void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 10, AIR 1.5 |
Annule l’opération de shader en cours d’exécution. Les résultats déjà calculés sont ignorés. L’événement complete
n’est pas déclenché.
L’appel répété de cancel()
n’a pas d’effet.
start | () | méthode |
public function start(waitForCompletion:Boolean = false):void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 10, AIR 1.5 |
Lance une opération de shader en mode synchrone ou asynchrone selon la valeur du paramètre waitForCompletion
.
En mode asynchrone (lorsque le paramètre waitForCompletion
est défini sur false
), mode par défaut, l’exécution de ShaderJob a lieu dans l’arrière-plan. L’opération de shader n’a aucune incidence sur la réactivité de l’affichage ou sur d’autres opérations. En mode asynchrone, l’appel de la méthode start()
est immédiatement renvoyé et le programme continue avec la ligne de code suivante. Lorsque l’opération de shader asynchrone est terminée, le résultat est disponible et l’événement complete
est distribué.
Une seule opération ShaderJob d’arrière-plan peut s’exécuter à la fois. Les opérations de shader restent en file d’attente jusqu’à leur exécution. Si vous appelez la méthode start()
lorsqu’une opération de shader est en cours d’exécution, les autres opérations sont ajoutées à la fin de la file d’attente, puis sont exécutées au moment opportun.
Pour exécuter une opération de shader en mode synchrone, appelez la méthode start()
et définissez le paramètre waitForCompletion
(l’unique paramètre) sur true
. Votre code s’interrompt au point où la méthode start()
est appelée jusqu’à ce que l’opération de shader se termine. A ce stade, le résultat est disponible et l’exécution se poursuit avec la ligne de code suivante.
Lorsque vous appelez la méthode start()
, l’occurrence Shader dans la propriété shader
est copiée en interne. L’opération de shader utilise cette copie interne et non une référence du shader d’origine. Toute modification apportée au shader, par exemple la modification de la valeur d’un paramètre, l’entrée ou le pseudo-code binaire, n’est pas appliquée au shader copié utilisé pour le traitement du shader. Pour intégrer les modifications apportées au shader dans le traitement du shader, appelez la méthode cancel()
(le cas échéant), puis de nouveau la méthode start()
pour redémarrer le traitement du shader.
Lorsqu’une opération de shader est en cours d’exécution, la valeur de l’objet target
n’est pas modifiée. Lorsque l’opération se termine (et que l’événement complete
est déclenché en mode asynchrone), le résultat complet est écrit en une seule fois dans l’objet target
. Si l’objet target
est une occurrence de BitmapData et que sa méthode dispose()
est appelée avant la fin de l’opération, l’événement complete
est tout de même déclenché en mode asynchrone. Toutefois, les données du résultat ne sont pas inscrites dans l’objet BitmapData car celui est en état disposé.
Paramètres
waitForCompletion:Boolean (default = false ) — Indique si le shader doit être exécuté dans l’arrière-plan (false , valeur par défaut) ou dans l’exécution du programme principale (true ).
|
Evénements
complete: — Distribué lorsque l’opération est terminée, si la méthode start() est appelée avec un argument waitForCompletion dont la valeur est true .
|
Valeur émise
ArgumentError — Lorsque la propriété target est définie sur null ou n’est pas une occurrence de BitmapData, de ByteArray ou de Vector.<Number>.
| |
ArgumentError — Lorsque le shader spécifie une entrée d’image non fournie.
| |
ArgumentError — Lorsqu’une occurrence de ByteArray ou de Vector.<Number> est utilisée comme entrée et les propriétés width et height ne sont pas spécifiées pour le ShaderInput, ou les valeurs spécifiées ne correspondent pas à la quantité de données dans l’objet d’entrée. Voir la propriété ShaderInput.input pour plus d’informations.
|
complete | Evénement |
flash.events.ShaderEvent
propriété ShaderEvent.type =
flash.events.ShaderEvent.COMPLETE
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 10, AIR 1.5 |
Distribué lorsqu’un ShaderJob qui s’exécute de façon asynchrone achève de traiter les données à l’aide du shader. Une occurrence de ShaderJob s’exécute de façon asynchrone lorsque la méthode start()
est appelée et que la valeur du paramètre waitForCompletion
est définie sur false
.
type
d’un objet événement complete
.
Les propriétés de cet événement sont les suivantes :
Propriété | Valeur |
---|---|
bubbles | false |
bitmapData | Objet BitmapData contenant le résultat de l’opération terminée (ou null si la cible n’était pas un objet BitmapData). |
byteArray | Objet ByteArray contenant le résultat de l’opération terminée (ou null si la cible n’était pas un objet ByteArray). |
cancelable | false ; il n’existe aucun comportement par défaut à annuler. |
currentTarget | Objet qui traite activement l’objet de l’événement avec un écouteur d’événement. |
target | Objet ShaderJob signalant la fin de l’opération. |
vector | Le Vector.Occurrence <Number> contenant le résultat de l’opération terminée (ou null si la cible n’était pas un Vector.Occurrence <Number>). |
Tue Jun 12 2018, 09:30 AM Z