AS3 snippet : gérer les évènements double clic et claviers.

La quasi-totalité des listeners d'actionscript3 sont directs, sauf ces deux là qui nécessitent un minimum de préparation / connaissance.

Double Clic

Il faut penser à spécifier explicitement la propriété doubleClickEnabled à true, sinon l'évènement n'est jamais déclenché.
Exemple :

function onDoubleClick(e:MouseEvent)
{
	trace("Double clic.");
}


UnSprite.doubleClickEnabled = true;
UnSprite.addEventListener(MouseEvent.DOUBLE_CLICK, onDoubleClick);

Quelques mots sur l'optimisation lors du choix des objets :

  • En Flex, utilisez un Sprite pour les formes vectorielles qui nécessitent la souris.
  • MovieClip est bien plus lourd et a des possibilités malheureusement inutilisables sans l'IDE d'Adobe (entre autres, gestion d'une timeline. Sans compter qu'il est dynamic).
  • Si vous n'avez pas besoin d'interactions souris, pensez à Shape qui est encore plus léger.
  • Attention, les objets Bitmap n'étendent pas InteractiveObject, n'essayez pas de leur ajouter des listeners pour savoir si l'utilisateur bouge la souris ;) Si nécessaire, placez-les dans un objet Sprite sur lequel vous pourrez alors enregistrer les écouteurs.

Clavier

La gestion du bubble sur le clavier est un peu chaotique. Pour être sûr de récupérer tous les évènements, inscrivez-vous directement sur le stage (ce qui implique d'ajouter le listener depuis la classe principale, ou de faire transiter un objet Stage sur tous les objets...)

function onKey(e:KeyboardEvent):void
{
	if (e.keyCode == 39)
		getNextLevel();
}

//Bien :
stage.addEventListener(KeyboardEvent.KEY_UP, onKey);

//Pas bien (l'évènement ne sera jamais dispatché) :
addEventListener(KeyboardEvent.KEY_UP, onKey);

Un petit mot pour les lecteurs curieux : Icosien avance bien, la banque de niveaux grossit, celle des bugs décroît... bientôt la phase de tests, n'hésitez pas à vous signaler pour en faire partie ;)