Gestione los eventos de gestos del mismo modo que lo haría con eventos táctiles básicos. Puede detectar una serie de eventos de gestos definidos por las constantes de tipo de evento en las clases
TransformGestureEvent
,
GestureEvent
y
PressAndTapGestureEvent
.
Para gestionar un evento táctil de gesto:
-
Defina la aplicación para que gestione entrada de gestos estableciendo la propiedad
flash.ui.Multitouch.inputMode
como
MultitouchInputMode.GESTURE
.
-
Asocie un detector de eventos a la instancia de una clase que herede propiedades de la clase InteractiveObject, por ejemplo, Sprite o TextField.
-
Especifique el tipo de evento de gesto que va a gestionar.
-
Llame a una función de controlador de eventos para hacer algo como respuesta al evento.
Por ejemplo, el siguiente código muestra un mensaje cuando el cuadrado dibujado en
mySprite
se toca en un dispositivo táctil:
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);
}
Los eventos de toque con dos dedos se gestionan del mismo modo, pero con la clase 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);
}
Los eventos de pulsar y tocar también se gestionan del mismo modo, pero con la clase 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);
}
Nota:
no todos los eventos GestureEvent, TransformGestureEvent y PressAndTapGestureEvent se admiten en todos los entornos de motor de ejecución. Por ejemplo, no todos los dispositivos táctiles pueden detectar toques con varios dedos. Por ello, los eventos
gestureSwipe
de InteractiveObject no se admiten en dichos dispositivos. Intente probar un evento concreto para garantizar que la aplicación funciona y consulte
Solución de problemas
para obtener más información.
Propiedades de eventos de gestos
Los eventos de gestos tienen un ámbito más reducido de propiedades de eventos que los eventos táctiles básicos. Puede acceder del mismo modo, desde el objeto de evento en la función del controlador de eventos.
Por ejemplo, el siguiente código gira
mySprite
cuando el usuario lleva a cabo un gesto de giro. El campo de texto muestra la cantidad de giro desde el último gesto (cuando pruebe este código, gírelo varias veces para ver el cambio en los valores):
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();
}
Nota:
no todas las propiedades TransformGestureEvent se admiten en todos los entornos de motor de ejecución. Por ejemplo, no todos los dispositivos táctiles pueden detectar el giro de un gesto en la pantalla. Por ello, la propiedad
TransformGestureEvent.rotation
no se admite en estos dispositivos. Intente probar una propiedad concreta para garantizar que la aplicación funciona y consulte
Solución de problemas
para obtener más información.