Les clics de souris créent des événements souris qui permettent de déclencher une fonctionnalité interactive. Il est possible d’ajouter un écouteur d’événement à la scène afin d’écouter les événements de souris qui se produisent à tout endroit du fichier SWF. Vous pouvez également ajouter des écouteurs d’événement à des objets sur la scène qui héritent de InteractiveObject (par exemple, Sprite ou MovieClip) ; ces écouteurs sont déclenchés lorsque vous cliquez sur l’objet.
Comme les événements de clavier, les événements de souris se propagent vers le haut. Dans l’exemple suivant,
square
étant un enfant de la scène, l’événement est distribué à la fois du sprite
square
et de l’objet scène en cas de clic sur le carré :
var square:Sprite = new Sprite();
square.graphics.beginFill(0xFF0000);
square.graphics.drawRect(0,0,100,100);
square.graphics.endFill();
square.addEventListener(MouseEvent.CLICK, reportClick);
square.x =
square.y = 50;
addChild(square);
stage.addEventListener(MouseEvent.CLICK, reportClick);
function reportClick(event:MouseEvent):void
{
trace(event.currentTarget.toString() + " dispatches MouseEvent. Local coords [" + event.localX + "," + event.localY + "] Stage coords [" + event.stageX + "," + event.stageY + "]");
}
Dans l’exemple précédent, notez que l’événement de souris contient des informations sur l’endroit où le clic s’est produit. Les propriétés
localX
et
localY
indiquent l’emplacement du clic sur l’enfant le plus bas de la chaîne d’affichage. Par exemple, si vous cliquez dans l’angle supérieur gauche de
square
, les coordonnées locales [0,0] sont signalées car il s’agit du point d’alignement de
square
. Autrement, les propriétés
stageX
et
stageY
se réfèrent aux coordonnées globales du clic sur la scène. Le même clic signale [50,50] pour ces coordonnées car
square
y a été déplacé. Ces deux paires de coordonnées peuvent être utiles, selon la façon dont vous souhaitez répondre à l’interaction utilisateur.
Remarque :
en mode plein écran, vous pouvez configurer l’application de façon à activer le verrouillage de la souris. Le verrouillage de la souris désactive le curseur et permet de déplacer la souris sans aucune limite. Pour plus d’informations, voir
Utilisation du mode Plein écran
.
L’objet MouseEvent contient aussi les propriétés booléennes
altKey
,
ctrlKey
et
shiftKey
. Vous pouvez utiliser ces propriétés pour vérifier si l’utilisateur appuie également sur la touche Alt, Ctrl ou Maj au moment du clic de la souris.
Glissement de sprites sur la scène
Vous pouvez autoriser les utilisateurs à faire glisser un objet Sprite sur la scène à l’aide de la méthode
startDrag()
de la classe Sprite. Le code suivant en est un exemple :
import flash.display.Sprite;
import flash.events.MouseEvent;
var circle:Sprite = new Sprite();
circle.graphics.beginFill(0xFFCC00);
circle.graphics.drawCircle(0, 0, 40);
var target1:Sprite = new Sprite();
target1.graphics.beginFill(0xCCFF00);
target1.graphics.drawRect(0, 0, 100, 100);
target1.name = "target1";
var target2:Sprite = new Sprite();
target2.graphics.beginFill(0xCCFF00);
target2.graphics.drawRect(0, 200, 100, 100);
target2.name = "target2";
addChild(target1);
addChild(target2);
addChild(circle);
circle.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown)
function mouseDown(event:MouseEvent):void
{
circle.startDrag();
}
circle.addEventListener(MouseEvent.MOUSE_UP, mouseReleased);
function mouseReleased(event:MouseEvent):void
{
circle.stopDrag();
trace(circle.dropTarget.name);
}
Pour plus d’informations, voir la section consacrée à la création d’une interaction de type glissement de souris dans
Modification de la position
.
Opération glisser-déposer dans AIR
Vous pouvez activer la prise en charge d’opérations glisser-déposer dans Adobe AIR pour permettre aux utilisateurs de faire glisser des données vers l’application et en dehors de celle-ci. Pour plus d’informations, voir
Opération glisser-déposer dans AIR
.
Personnalisation du curseur de la souris
Le curseur de la souris (pointeur de la souris) peut être masqué ou remplacé pour tout objet d’affichage de la scène. Pour masquer ce curseur, appelez la méthode
Mouse.hide()
. Personnalisez le curseur en appelant
Mouse.hide()
, en écoutant l’événement
MouseEvent.MOUSE_MOVE
en provenance de la scène et en définissant les coordonnées d’un objet d’affichage (votre curseur personnalisé) sur les propriétés
stageX
et
stageY
de l’événement. L’exemple suivant illustre une exécution de base de cette tâche :
var cursor:Sprite = new Sprite();
cursor.graphics.beginFill(0x000000);
cursor.graphics.drawCircle(0,0,20);
cursor.graphics.endFill();
addChild(cursor);
stage.addEventListener(MouseEvent.MOUSE_MOVE,redrawCursor);
Mouse.hide();
function redrawCursor(event:MouseEvent):void
{
cursor.x = event.stageX;
cursor.y = event.stageY;
}