使用與基本觸控事件相同的方式,處理手勢事件。您可以偵聽
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 事件類型。例如,並非所有觸控裝置都可以偵測多根手指揮動。因此,無法偵測多根手指揮動的裝置就不支援 InteractiveObject
gestureSwipe
事件。嘗試測試特定事件支援,以確保應用程式可以運作,並參閱
疑難排解
,以取得詳細資訊。
手勢事件屬性
手勢事件的事件屬性範圍小於基本觸控事件。而其存取方式一樣是透過事件處理常式函數中的事件物件。
例如,使用者在
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
屬性。嘗試測試特定屬性支援,以確保應用程式可以運作,並參閱
疑難排解
,以取得詳細資訊。