AS3 Signals : passer des paramètres avec un Event

Commentaires fermés sur AS3 Signals : passer des paramètres avec un Event

Écrit le 17 avril par Matthieu
Publié dans le(s) sujet(s) Framework AS3

Mots clés : , ,

L’utilisation des évènements est indispensable dans la création de vos applications flash.

Le système Event par défaut d’Adobe est très pratique. Cependant, il représente un défaut de taille :

Il n’est pas possible de transmettre des paramètres avec nos évènements !

Dans certaine situation, cela peut s’avérer très problématique… et vous causer beaucoup de nuits blanches en tant que développeur flash !

Heureusement, Robert Penner a eu l’ingénieuse idée de créer une librairie de diffusion d’évènements, prenant en charge le passage de paramètres 😉

Présentation AS3 Signals

AS3Signals est une librairie qui améliore et peut remplacer l’utilisation du système événementiel de Flash.

Cette librairie s’inspire du système événementiel de C# et signals/slots de QT.

Ces caractéristiques :

  • Un signal est un mini-dispatcher spécifique à un événement, avec son propre réseau d’écouteurs.
  • Un signal est un attribut concret de la classe qui émet celui-ci.
  • Les écouteurs souscrivent à un objet concret et non plus à un canal défini par une chaine de caractères.
  • Les constantes définissant un événement ne sont plus nécessaires.
Sa philosophie :
  • La Composition et les Interfaces sont favorisés par rapport à l’Héritage.
  • Les évènements dans une Interface sont une bonnes choses.
  • Les différents types d’évènements sont des classes et non des String.
  • Les classes évènements sont concentrées sur les données qu’elles contiennent et non sur celui qui les envoient.
  • Les classes évènements ne contiennent pas de constantes String autres que les classes qui les utilisent.
  • Jusqu’ici, pas de mot clé dans les sources.
  • Pas de Singleton.

AS3Signals est compatible avec les objets natifs d’AS3 émettant des événements (comme par exemple le clic de la souris).

Une fonctionnalité intéressante est la possibilité, pour un émetteur, de désinscrire la totalité des écouteurs grâce à l’appel d’une seule méthode.

Utilisation AS3 Signals

La mise en place d’AS3 Signals est relativement simple. Voici une mise en pratique pas à pas.

Etape 1 : la classe Event

Dans votre classe « Event », celle qui diffuse des évènements pour informer des écouteurs.

Vous devez ajouter un objet Signal ou NativeSignal selon l’utilisation à réaliser.

Avec AS3 Signals, il est possible de typer les paramètres à transmettre avec l’évènement (c’est génial 😉 ).

Un objet Signal prend comme paramètre, le type des paramètres transmis avec l’évènement.

Par exemple :

[codesyntax lang= »actionscript3″ title= »AS3 Signals » bookmarkname= »AS3 Signals »]

[/codesyntax]

Ensuite, lorsque la classe Event doit diffuser un évènements aux écouteurs, il faut procéder comme suit :

[codesyntax lang= »actionscript3″ title= »AS3 Signals » bookmarkname= »AS3 Signals »]

[/codesyntax]

Etape 2 : les écouteurs

Pour écouter les évènements diffuser par la classe « Event », il suffit de lui indiquer la fonction qui sera appelée. Cette fonction récupère en entrée les paramètres envoyé par l’objet Signal.

[codesyntax lang= »actionscript3″ title= »AS3 Signals » bookmarkname= »AS3 Signals »]

[/codesyntax]

Et puis c’est terminé !

Options supplémentaires

AS3 Signals peut même remplacer les évènements par défaut d’Adobe (MouseEvent…).

Il suffit d’utiliser l’objet NativeSignal et de lui transmettre le type d’évènement à capturer.

[codesyntax lang= »actionscript3″ title= »AS3 Signals » bookmarkname= »AS3 Signals »]

[/codesyntax]

Vous pouvez également simuler l’évènement AS3 Signals pour informer les écouteurs.

[codesyntax lang= »actionscript3″ title= »AS3 Signals » bookmarkname= »AS3 Signals »]

[/codesyntax]

Pour supprimer un écouteur :

[codesyntax lang= »actionscript3″ title= »AS3 Signals » bookmarkname= »AS3 Signals »]

[/codesyntax]

Pour supprimer tous les écouteurs d’un seul coup :

[codesyntax lang= »actionscript3″ title= »AS3 Signals » bookmarkname= »AS3 Signals »]

[/codesyntax]

Il est même possible d’ajouter des écouteurs qui seront appelés une seule fois puis supprimés automatiquement !

Cela peut être utile dans certains cas…

[codesyntax lang= »actionscript3″ title= »AS3 Signals » bookmarkname= »AS3 Signals »]

[/codesyntax]

Les performances

Le gain de performances est énorme du passage du système Event d’Adobe à AS3 Signals de Robert Penner.

Consultez le résultat des benchmarks.

Mise en pratique AS3 Signals

Ci-dessous une mise en pratique complète d’AS3 Signals.

Téléchargement

Téléchargez le code source complet et commenté de l’exemple pratique.

Télécharger “Exemple AS3 Signals”

ex-as3-signals.zip – Téléchargé 561 fois – 236,95 Ko

Téléchargement depuis le dépôt GitHub : https://github.com/robertpenner/as3-signals

Avez-vous l’intention d’utiliser AS3 Signals dans vos applications pour remplacer Event d’Adobe ?

Ou peut être préférez-vous rester avec le système évènementiel par défaut de Flash ?

Il vous convient parfaitement…