处理用户交互
目前,触摸屏已经成为移动设备的标配,Android设备也不例外。因此,对开发者来说,处理用户交互在很大程度上也就是处理手与触摸屏的交互。
由于手指很灵活,在一块触摸屏上可以产生多种多样的操作方式。比如,单个手指就有按下、移动、快速单击、长按等操作;两个手指可以做旋转、放缩手势等,这些手势引发的就是多点触摸事件。如何在AIR中处理多点触摸事件,正是本章要介绍的内容。
关于多点触摸
在ActionScript 3.0中按照交互行为产生的事件类型,将多点触摸动作分为两类:触摸和手势。
触摸动作指一个或多个手指触摸屏幕的动作,引发的事件对象为TouchEvent类型。手势往往由一系列的触摸动作组成,以代表某个特定意义,引发的事件对象为GestureEvent类型。
由于触摸和手势存在包含关系,在运行期间程序无法同时检测这两类事件,为此ActionScript 3.0引入了Multitouch类,用来管理程序的触摸交互模式。如果要检测触摸事件,必须通过下面的代码改变检测方式:
//导入相应的类
import flash.ui.Multitouch;
import flash.ui.MultitouchInputMode;
…
//检测系统是否支持触摸事件
if ( Multitouch.supportsTouchEvents )
{
//设置多点触摸的模式为触摸
Multitouch.inputMode=MultitouchInputMode.TOUCH_POINT;
}
在处理触摸事件之前,建议开发者先检测Multitouch 类的静态属性supportsTouchEvents 是否为true,即检测当前设置是否支持触摸事件,然后再进行后面的操作。如果设备不支持触摸事件,可以用其他方式来处理交互,这样就可以兼容多种设备。
intputMode是Multitouch类的另一个静态属性,表示当前程序的触摸交互模式,有3个可选值,为MultitouchInputMode类的静态常量:
MultitouchInputMode.NONE(不处理触摸和手势事件)
MultitouchInputMode.TOUCH_POINT(处理触摸事件)
MultitouchInputMode.GESTURE(默认值,处理手势事件)
在AIR中默认的交互模式为MultitouchInputMode.GESTURE,即处理手势事件。因此,要使用触摸事件时,必须将inputMode修改为MultitouchInputMode.TOUCH_POINT。
设置好交互模式后,就可以像处理其他事件一样,对舞台上的元件添加相应的事件监听器来响应用户的操作。
提示 不管是在哪一种触摸交互模式下,鼠标事件都可以正常使用。
【编辑推荐】
【责任编辑:闫佳明 TEL:(010)68476606】
点赞 0