Gestenereignisse werden genauso verarbeitet wie einfache Berührungsereignisse. Sie können auf eine Serie von Gestenereignissen warten, die durch Ereignistypkonstanten in den Klassen
TransformGestureEvent
,
GestureEvent
und
PressAndTapGestureEvent
definiert sind.
Verarbeiten eines Gestenberührungsereignisses:
-
Stellen Sie die
flash.ui.Multitouch.inputMode
-Eigenschaft auf
MultitouchInputMode.GESTURE
ein, damit Ihre Anwendung die Gesteneingabe verarbeiten kann.
-
Fügen Sie einen Ereignis-Listener an eine Instanz einer Klasse an, die Eigenschaften von der InteractiveObject-Klasse erbt, wie beispielsweise Sprite oder TextField.
-
Geben Sie den Typ des zu verarbeitenden Gestenereignisses an.
-
Rufen Sie eine Ereignisprozedurfunktion auf, die auf das Ereignis reagiert.
Mit dem folgenden Code wird beispielsweise eine Meldung eingeblendet, wenn der Benutzer auf einem berührungsempfindlichen Bildschirm eine Swipe-Bewegung über das Quadrat auf
mySprite
durchführt:
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);
}
Tippereignisse mit zwei Fingern werden genauso verarbeitet, verwenden aber die GestureEvent-Klasse:
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);
}
Ereignisse, die aus Drücken und Tippen bestehen, werden ebenfalls genauso verarbeitet, sie verwenden jedoch die PressAndTapGestureEvent-Klasse:
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);
}
Hinweis:
Nicht alle GestureEvent-, TransformGestureEvent- und PressAndTapGestureEvent-Ereignistypen werden in allen Laufzeitumgebungen unterstützt. Beispielsweise können nicht alle berührungsempfindlichen Geräte eine Swipe-Bewegung mit mehreren Fingern erkennen. Die InteractiveObject-Ereignisse
gestureSwipe
werden deshalb auf diesen Geräten nicht unterstützt. Überprüfen Sie, ob bestimmte Ereignisse unterstützt werden, um sicherzustellen, dass Ihre Anwendung funktioniert. Weitere Informationen finden Sie unter
Fehlerbehebung
.
Eigenschaften von Gestenereignissen
Für Gestenereignisse sind weniger Eigenschaften verfügbar als für einfache Berührungsereignisse. Der Zugriff erfolgt auf dieselbe Weise über das Ereignisobjekt in der Ereignisprozedurfunktion.
Mit dem folgenden Code wird beispielsweise
mySprite
gedreht, wenn der Benutzer eine Drehgeste ausführt. Das Textfeld zeigt den Drehbetrag seit der letzten Geste (drehen Sie das Objekt beim Testen dieses Codes mehrmals, um zu sehen, wie die Werte sich ändern):
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();
}
Hinweis:
Nicht alle TransformGestureEvent-Eigenschaften werden in allen Laufzeitumgebungen unterstützt. Beispielsweise sind nicht alle berührungsempfindlichen Geräte in der Lage, eine Drehgeste auf dem Bildschirm zu erkennen. Deshalb wird die
TransformGestureEvent.rotation
-Eigenschaft auf diesen Geräten nicht unterstützt. Überprüfen Sie, ob bestimmte Eigenschaften unterstützt werden, um sicherzustellen, dass Ihre Anwendung funktioniert. Weitere Informationen finden Sie unter
Fehlerbehebung
.