Bewegingsgebeurtenissen worden op dezelfde manier afgehandeld als basisaanraakgebeurtenissen. U kunt luisteren naar een reeks bewegingsgebeurtenissen die worden gedefinieerd door de constanten voor het gebeurtenistype in de
TransformGestureEvent
-klasse, de
GestureEvent
-klasse en de
PressAndTapGestureEvent
-klasse.
Als u een bewegingsgebeurtenis wilt afhandelen, gaat u als volgt te werk:
-
Configureer uw toepassing voor het afhandelen van bewegingsinvoer door de eigenschap
flash.ui.Multitouch.inputMode
in te stellen op
MultitouchInputMode.GESTURE
.
-
Koppel een gebeurtenislistener aan een klasseninstantie die de eigenschappen van de InteractiveObject-klasse overneemt, zoals bijvoorbeeld Sprite of TextField.
-
Geef aan welk type bewegingsgebeurtenis moet worden afgehandeld.
-
Roep een gebeurtenisafhandelingsfunctie aan om te reageren op de gebeurtenis.
Met de volgende code wordt een bericht weergegeven als het vierkant op
mySprite
wordt weggezwiept op een aanraakscherm.
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);
}
Tikgebeurtenissen met twee vingers worden op dezelfde manier afgehandeld, maar maken wel gebruik van de 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);
}
Druk- en tikgebeurtenissen worden ook op dezelfde manier afgehandeld, maar hierbij wordt gebruik gemaakt van de 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);
}
Opmerking:
Niet alle GestureEvent-, TransformGestureEvent- en PressAndTapGestureEvent-gebeurtenistypen worden in alle runtimeomgevingen ondersteund. Een zwiepbeweging met meerdere vingers wordt bijvoorbeeld niet herkend door alle aanraakapparaten. Op deze apparaten worden InteractiveObject
gestureSwipe
-gebeurtenissen daarom ook niet ondersteund. Test of specifieke gebeurtenissen worden ondersteund. Zo weet u zeker dat uw toepassing werkt. Ga naar
Problemen oplossen
voor meer informatie.
Eigenschappen van bewegingsgebeurtenissen
Bewegingsgebeurtenissen hebben een kleiner bereik aan gebeurteniseigenschappen dan basisaanraakgebeurtenissen. Deze gebeurtenissen zijn op dezelfde manier toegankelijk, namelijk via het gebeurtenisobject in de gebeurtenisafhandelingsfunctie.
Met de volgende code wordt
mySprite
geroteerd wanneer de gebruiker er een draaibeweging op uitvoert. Het tekstveld laat zien hoeveel het object is gedraaid sinds de laatste beweging (wanneer u deze code test, kunt u het object enkele keren draaien om de kijken hoe de waarden veranderen):
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();
}
Opmerking:
Niet alle TransformGestureEvent -eigenschappen worden in alle runtimeomgevingen ondersteund. Een draaibeweging wordt bijvoorbeeld niet herkend door alle aanraakapparaten. Op deze apparaten wordt de eigenschap
TransformGestureEvent.rotation
dan ook niet ondersteund. Test of specifieke eigenschappen worden ondersteund. Zo weet u zeker dat uw toepassing werkt. Ga naar
Problemen oplossen
voor meer informatie.