Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox

DoubleClick en AS3

Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.Par ekameleon (Marc Alcaraz)

Voyons de plus prêt comment utiliser l'événement MouseEvent.DOUBLE_CLICK du nouveau framework AS3.

Tous les objets qui ont la chance d'hériter de la classe flash.display.InteractiveObject peuvent bénéficier de tous les événements liés à aux intéractions avec la souris, les touches du clavier ou la prise ou la perte de focus sur un objet par l'utilisateur.

Ainsi de nombreuses classes (comme les classes Sprite, TextField, MovieClip, DisplayObjectContainer, etc..) peuvent utiliser des méthodes, des propriétés et des événements spécifiquement liés aux intéractions directes de l'utilisateur sur les éléments graphiques de l'application.

Pour utiliser l'événement MouseEvent.DOUBLE_CLICK, il suffit donc de regarder de plus prêt la classe InteractiveObject et de voir qu'il existe une propriété virtuelle doubleClickEnabled (Boolean) qui vaut false par défaut. Ainsi en passant cette propriété à true, il est possible de notifier ce type d'événements.

Remarques :

Il est également possible de changer propriété virtuelle mouseEnabled, ce qui permet d'activer ou de désactiver les événements spécifiques aux intéractions avec souris comme MouseEvent.MOUSE_DOWN, MouseEvent.MOUSE_UP, etc.

Si l'on va un peu plus loin dans l'héritage de la classe InteractiveObject, on peut remarquer également au niveau de la classe Sprite qu'il existe une propriété virtuelle buttonMode qui permet d'afficher ou non la main à la place du curseur classique de la souris lorsque l'on passe sur un Sprite diffusant des événements de type MouseEvent ! En AS1 et AS2 il était possible d'utiliser la propriété useHandCursor, cette propriété reste présente en AS3 mais il faut absolument que la propriété buttonMode soit true pour être active !

Voilà pour finir l'exemple qui illustre ce tutorial :

package
{
	import flash.display.Sprite;
	import flash.events.MouseEvent ;
 
	public class TestDoubleClick extends Sprite
	{
		// ----o Constructor
 
		public function TestDoubleClick()
		{
 
			var bt:Sprite = new Sprite() ;
			bt.x = 20 ;
			bt.y = 20 ;
 
			bt.buttonMode = true ; // active le curseur main en mode button sur le Sprite !
 
			// bt.mouseEnabled = false ; // désactive tous les événements de la souris
 
			bt.doubleClickEnabled = true ; // active le doubleClick
 
			bt.graphics.lineStyle(2, 0xFFFFFF, 100) ;
			bt.graphics.beginFill(0xFF0000, 100) ;
			bt.graphics.drawRoundRect(0, 0, 60, 12, 4, 4) ;
			bt.graphics.endFill() ;
 
			bt.addEventListener(MouseEvent.DOUBLE_CLICK, onDoubleClick) ;
 
			addChild(bt) ;
 
		}
 
		// ----o Public Methods
 
		public function onDoubleClick(e:MouseEvent):void
		{
			trace("> " + e) ;
		}
 
	}
 
}

Par EKAMELEON - ALCARAZ Marc (2006) Vous pouvez retrouver ce tutorial et des commentaires à ce sujet sur mon blog.