Gestite gli eventi manovra nello stesso modo degli eventi di tocco di base. Potete intercettare una serie di eventi gestuali definiti dalle costanti del tipo di evento nelle classi
TransformGestureEvent
,
GestureEvent
e
PressAndTapGestureEvent
.
Per gestire eventi di tocco gestuale:
-
Configurate l'applicazione per gestire l'input gestuale impostando la proprietà
flash.ui.Multitouch.inputMode
su
MultitouchInputMode.GESTURE
.
-
Allegate un listener di eventi a un'istanza di una classe che eredita le proprietà dalla classe InteractiveObject, ad esempio Sprite o TextField.
-
Specificate il tipo di evento manovra da gestire.
-
Chiamate una funzione gestore di eventi per eseguire un'azione in risposta all'evento.
Ad esempio, il codice seguente visualizza un messaggio quando il quadrato disegnato in
mySprite
viene toccato su uno schermo abilitato al tocco:
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);
}
Gli eventi di tocco a due dita vengono gestiti allo stesso modo, ma utilizzano la 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);
}
Anche gli eventi premi e tocca vengono gestiti allo stesso modo, ma utilizzano la 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:
non tutti i tipi di eventi GestureEvent, TransformGestureEvent e PressAndTapGestureEvent sono supportati in tutti gli ambienti di runtime. Ad esempio, non tutti i dispositivi abilitati al tocco sono in grado di rilevare una strisciata a più dita. Pertanto, gli eventi
gestureSwipe
di InteractiveObject non sono supportati in questi dispositivi. Provate a controllare il supporto evento specifico per verificare che l'applicazione funzioni e vedete
Risoluzione dei problemi
per ulteriori informazioni.
Proprietà evento manovra
L'ambito delle proprietà evento degli eventi manovra è più piccolo di quello degli eventi di tocco di base. Potete accedervi allo stesso modo, mediante l'oggetto evento nella funzione gestore di eventi.
Ad esempio, il codice seguente ruota
mySprite
quando l'utente esegue una manovra di rotazione su di esso. Il campo di testo mostra la quantità di rotazione dall'ultima manovra (quando verificate il codice, ruotatelo diverse volte per visualizzare i cambiamenti nei valori):
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:
non tutte le proprietà TransformGestureEvent sono supportate in tutti gli ambienti di runtime. Ad esempio, non tutti i dispositivi abilitati al tocco sono in grado di rilevare la rotazione di una manovra sullo schermo. Pertanto, la proprietà
TransformGestureEvent.rotation
non è supportata su questi dispositivi. Controllate il supporto proprietà specifico per verificare che l'applicazione funzioni e vedete
Risoluzione dei problemi
per ulteriori informazioni.