Manipule eventos de gesto da mesma forma que eventos de toque básicos. Você pode monitorar uma série de eventos de gesto definidos pelas constantes de tipo de evento na classe
TransformGestureEvent
,
GestureEvent
e na classe
PressAndTapGestureEvent
.
Para manipular um evento de toque de gesto:
-
Configure o aplicativo para manipular entrada de gestos definindo a propriedade
flash.ui.Multitouch.inputMode
para
MultitouchInputMode.GESTURE
.
-
Anexe um ouvinte de evento à uma instância de uma classe que herda propriedades da classe InteractiveObject como, por exemplo, Sprite ou TextField.
-
Especifique o tipo de evento de gesto a ser manipulado.
-
Chame a função do manipulador do evento para responder ao evento.
O exemplo a seguir exibe uma mensagem quando o quadrado desenhado em
mySprite
é tocado em uma tela sensível ao toque:
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);
}
Eventos de toque de dois dedos são manipulados da mesma forma, mas utilizam a 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);
}
Eventos de pressionar e tocar também são manipulados da mesma forma, mas utilizam a 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);
}
Nota:
Nem todos os tipos de evento GestureEvent, TransformGestureEvent e PressAndTapGestureEvent possuem suporte em todos os ambientes de tempo de execução. Por exemplo, nem todos os dispositivos sensíveis ao toque são capazes de detectar um toque com diversos dedos. Dessa forma, os eventos InteractiveObject
gestureSwipe
não possuem suporte nestes dispositivos. Tente testar o suporte de um evento específico para verificar se o aplicativo funciona e, em seguida, consulte
Solução de problemas
para obter mais informações.
Propriedades de Evento de gestos
Eventos de gesto possuem um escopo menor de propriedades de eventos do que eventos de toque básicos. Você pode acessá-los da mesma forma, por meio do objeto de vento na função do manipulador de eventos.
Por exemplo, o código a seguir gira a
mySprite
conforme o usuário executa um gesto de rotação nela. O campo de texto mostra o valor da rotação desde o último gesto (ao testar o código, gire-o diversas vezes para verificar a mudança do valor):
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:
Nem todas as propriedades TransformGestureEvent possuem suporte em todos os ambientes de tempo de execução. Por exemplo, nem todos os dispositivos sensíveis ao toque são capazes de detectar a rotação de um gesto na tela. Dessa forma, a propriedade
TransformGestureEvent.rotation
não possui suporte em todos estes dispositivos. Tente testar o suporte de uma propriedade específica para verificar se o aplicativo funciona e, em seguida, consulte
Solução de problemas
para obter mais informações.