Traitez les événements de mouvement comme tout événement tactile de base. Vous pouvez écouter une série d’événements de mouvement définis par les constantes de type d’événement dans la classe
TransformGestureEvent
, la classe
GestureEvent
et la classe
PressAndTapGestureEvent
.
Pour gérer un événement tactile de mouvement :
-
Activez la prise en charge de la saisie par mouvement dans l’application en définissant la propriété
flash.ui.Multitouch.inputMode
sur
MultitouchInputMode.GESTURE
.
-
Associez un écouteur d’événements à une occurrence de classe qui hérite des propriétés de la classe InteractiveObject (Sprite ou TextField, par exemple).
-
Indiquez le type d’événement de mouvement à gérer.
-
Appelez une fonction de gestionnaire d’événement en réponse à l’événement.
Le code suivant affiche par exemple un message lorsque l’utilisateur effectue un mouvement de glissement sur le carré dessiné sur
mySprite
sur un écran tactile :
Multitouch.inputMode=MultitouchInputMode.GESTURE;
var mySprite:Sprite = new Sprite();
var myTextField:TextField = new TextField();
mySprite.graphics.beginFill(0x336699);
mySprite.graphics.drawRect(0,0,40,40);
addChild(mySprite);
mySprite.addEventListener(TransformGestureEvent.GESTURE_SWIPE, swipehandler);
function swipehandler(evt:TransformGestureEvent): void {
myTextField.text = "I've been swiped";
myTextField.y = 50;
addChild(myTextField);
}
Les événements d’appui double sont gérés de la même façon, mais font appel à la classe GestureEvent :
Multitouch.inputMode=MultitouchInputMode.GESTURE;
var mySprite:Sprite = new Sprite();
var myTextField:TextField = new TextField();
mySprite.graphics.beginFill(0x336699);
mySprite.graphics.drawRect(0,0,40,40);
addChild(mySprite);
mySprite.addEventListener(GestureEvent. GESTURE_TWO_FINGER_TAP, taphandler);
function taphandler(evt:GestureEvent): void {
myTextField.text = "I've been two-finger tapped";
myTextField.y = 50;
addChild(myTextField);
}
Les événements d’appui-appui bref sont également gérés de la même façon, mais font appel à la classe PressAndTapGestureEvent :
Multitouch.inputMode=MultitouchInputMode.GESTURE;
var mySprite:Sprite = new Sprite();
var myTextField:TextField = new TextField();
mySprite.graphics.beginFill(0x336699);
mySprite.graphics.drawRect(0,0,40,40);
addChild(mySprite);
mySprite.addEventListener(PressAndTapGestureEvent. GESTURE_PRESS_AND_TAP, taphandler);
function taphandler(evt:PressAndTapGestureEvent): void {
myTextField.text = "I've been press-and-tapped";
myTextField.y = 50;
addChild(myTextField);
}
Remarque :
certains environnements d’exécution ne prennent pas en charge tous les types d’événements GestureEvent, TransformGestureEvent et PressAndTapGestureEvent. Ainsi, certains périphériques tactiles ne sont pas en mesure de détecter un mouvement de glissement à plusieurs doigts. Les événements
gestureSwipe
de la classe InteractiveObject ne sont donc pas pris en charge par ces périphériques. Essayez de vérifier la prise en charge d’événements spécifiques pour assurer le fonctionnement de l’application. Pour plus d’informations, voir
Résolution des problèmes
.
Propriétés des événements de mouvement
Les événements de mouvement gèrent moins de propriétés que les événements tactiles de base. Vous y accédez de la même façon, par le biais de l’objet d’événement de la fonction du gestionnaire d’événement.
Le code suivant fait par exemple pivoter
mySprite
lorsque l’utilisateur effectue dessus un mouvement de rotation. Le champ de texte indique le facteur de rotation appliqué depuis le dernier mouvement (lorsque vous testez ce code, faites-le pivoter plusieurs fois pour visualiser les changements de valeur) :
Multitouch.inputMode=MultitouchInputMode.GESTURE;
var mySprite:Sprite = new Sprite();
var mySpriteCon:Sprite = new Sprite();
var myTextField:TextField = new TextField();
myTextField.y = 50;
addChild(myTextField);
mySprite.graphics.beginFill(0x336699);
mySprite.graphics.drawRect(-20,-20,40,40);
mySpriteCon.addChild(mySprite);
mySprite.x = 20;
mySprite.y = 20;
addChild(mySpriteCon);
mySprite.addEventListener(TransformGestureEvent.GESTURE_ROTATE, rothandler);
function rothandler(evt:TransformGestureEvent): void {
evt.target.parent.rotationZ += evt.target.rotation;
myTextField.text = evt.target.parent.rotation.toString();
}
Remarque :
certains environnements d’exécution ne prennent pas en charge toutes les propriétés TransformGestureEvent. Ainsi, certains périphériques tactiles ne sont pas en mesure de détecter la rotation d’un mouvement à l’écran. Ils ne prennent par conséquent pas en charge la propriété
TransformGestureEvent.rotation
. Essayez de tester la prise en charge de propriétés spécifiques pour assurer le fonctionnement de l’application. Pour plus d’informations, voir
Résolution des problèmes
.