AIR Android:關于多點觸摸
處理用戶交互
目前,觸摸屏已經(jīng)成為移動設備的標配,Android設備也不例外。因此,對開發(fā)者來說,處理用戶交互在很大程度上也就是處理手與觸摸屏的交互。
由于手指很靈活,在一塊觸摸屏上可以產(chǎn)生多種多樣的操作方式。比如,單個手指就有按下、移動、快速單擊、長按等操作;兩個手指可以做旋轉、放縮手勢等,這些手勢引發(fā)的就是多點觸摸事件。如何在AIR中處理多點觸摸事件,正是本章要介紹的內(nèi)容。
關于多點觸摸
在ActionScript 3.0中按照交互行為產(chǎn)生的事件類型,將多點觸摸動作分為兩類:觸摸和手勢。
觸摸動作指一個或多個手指觸摸屏幕的動作,引發(fā)的事件對象為TouchEvent類型。手勢往往由一系列的觸摸動作組成,以代表某個特定意義,引發(fā)的事件對象為GestureEvent類型。
由于觸摸和手勢存在包含關系,在運行期間程序無法同時檢測這兩類事件,為此ActionScript 3.0引入了Multitouch類,用來管理程序的觸摸交互模式。如果要檢測觸摸事件,必須通過下面的代碼改變檢測方式:
- //導入相應的類
- import flash.ui.Multitouch;
- import flash.ui.MultitouchInputMode;
- …
- //檢測系統(tǒng)是否支持觸摸事件
- if ( Multitouch.supportsTouchEvents )
- {
- //設置多點觸摸的模式為觸摸
- Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
- }
在處理觸摸事件之前,建議開發(fā)者先檢測Multitouch 類的靜態(tài)屬性supportsTouchEvents 是否為true,即檢測當前設置是否支持觸摸事件,然后再進行后面的操作。如果設備不支持觸摸事件,可以用其他方式來處理交互,這樣就可以兼容多種設備。
intputMode是Multitouch類的另一個靜態(tài)屬性,表示當前程序的觸摸交互模式,有3個可選值,為MultitouchInputMode類的靜態(tài)常量:
MultitouchInputMode.NONE(不處理觸摸和手勢事件)
MultitouchInputMode.TOUCH_POINT(處理觸摸事件)
MultitouchInputMode.GESTURE(默認值,處理手勢事件)
在AIR中默認的交互模式為MultitouchInputMode.GESTURE,即處理手勢事件。因此,要使用觸摸事件時,必須將inputMode修改為MultitouchInputMode.TOUCH_POINT。
設置好交互模式后,就可以像處理其他事件一樣,對舞臺上的元件添加相應的事件監(jiān)聽器來響應用戶的操作。
提示 不管是在哪一種觸摸交互模式下,鼠標事件都可以正常使用。