Обработка событий жестов осуществляется так же, как и обработка основных событий прикосновения. Можно прослушать последовательность событий жестов, заданных константами типов событий в классах
TransformGestureEvent
,
GestureEvent
и
PressAndTapGestureEvent
.
Обработка события жеста:
-
Задайте в приложении обработку ввода жестом, установив для свойства
flash.ui.Multitouch.inputMode
значение
MultitouchInputMode.GESTURE
.
-
Назначьте прослушиватель событий экземпляру класса, который наследует свойства класса InteractiveObject, например Sprite или TextField.
-
Укажите тип обрабатываемого события жеста.
-
Вызовите функцию обработчика события для выполнения действия в ответ на событие.
Например, следующий код позволяет отобразить сообщение, когда пользователь проводит по квадрату, нарисованному в объекте
mySprite
, на сенсорном экране:
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);
}
События прикосновения двумя пальцами обрабатываются так же, но с использованием класса 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);
}
События удерживания и нажатия также обрабатываются аналогичным образом, но с использованием класса 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);
}
Примечание.
Все типы событий GestureEvent, TransformGestureEvent и PressAndTapGestureEvent могут не поддерживаться во всех средах. Например, не все устройства с сенсорным экраном поддерживают обнаружение перемещения нескольких пальцев. Поэтому события
gestureSwipe
объекта InteractiveObject не поддерживаются в этих устройствах. Попробуйте проверить наличие поддержки определенного события для обеспечения правильной работы приложения и см. раздел «
Устранение неполадок
» для получения дополнительных сведений.
Свойства событий жеста
События жестов имеют меньший диапазон свойств событий, чем основные события прикосновения. Доступ к ним осуществляется так же: через объект события в функции обработчика события.
Например, в следующем коде выполняется поворот объекта
mySprite
, когда пользователь выполняет в нем жест поворота. В текстовом поле показан угол поворота, выполненного с помощью последнего жеста (при тестировании кода поверните объект несколько раз для просмотра изменения значения):
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();
}
Примечание.
Все свойства TransformGestureEvent могут поддерживаться не во всех средах. Например, не все устройства с сенсорным экраном поддерживают обнаружение жеста поворота на экране. Поэтому свойство
TransformGestureEvent.rotation
не поддерживается в этих устройствах. Попробуйте проверить наличие поддержки определенного свойства для обеспечения правильной работы приложения и см. раздел «
Устранение неполадок
» для получения дополнительных сведений.