AS3移动设备上的触控事件和手势(转)
2015-01-15 16:30
357 查看
当涉及到移动设备的时候,简单鼠标点击的日子已经一去不复返了。实际上,有很多很酷触控事件和手势真的可以扩展应用程序的功能。
触控事件 vs. 手势
那么触控事件和手势有什么区别呢?嗯,触控事件是设备提供的触摸点原始数据。手势是利用触控事件实现的预设“方案”。比如想改变照片的大小时,你无需跟踪两个触摸点检测他们是靠近还是远离,可以考虑用GESTURE_ZOOM事件实现。
现在让我们更深入去看看ActionScript提供的触控事件 (TOUCH_POINT) 和手势(GESTURE)
鼠标点击 = 轻敲事件
轻敲事件和桌面系统中的鼠标点击作用一样:
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
square.addEventListener(TouchEvent.TOUCH_TAP, tapHandler);
function tapHandler(event:TouchEvent):void
{
// Start your custom code
}
复制代码
点击/拖拽 = Touch Begin/End
当你在移动设备上做点击并且拖动可以使用 TOUCH_BEGIN和TOUCH_END:
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
square.addEventListener(TouchEvent.TOUCH_BEGIN, touchBeginHandler);
var fl_DragBounds:Rectangle = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);
function fl_TouchBeginHandler(event:TouchEvent):void
{
event.target.startTouchDrag(event.touchPointID, false, fl_DragBounds);
}
square.addEventListener(TouchEvent.TOUCH_END, touchEndHandler);
function fl_TouchEndHandler(event:TouchEvent):void
{
event.target.stopTouchDrag(event.touchPointID);
}
复制代码
长按
长按(Long Tap)通常用于显示所选图片上的子菜单。例如,在一张图片上长按可能会激活一个子菜单允许用户保存图片。实现这个功能可以利用一个计时器倒数1秒后显示菜单。
var pressTimer:Timer = new Timer(1000);
pressTimer.addEventListener(TimerEvent.TIMER, pressTimerHandler);
function fl_PressTimerHandler(event:TimerEvent):void
{
// Start your custom code
}
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
square.addEventListener(TouchEvent.TOUCH_BEGIN, pressBeginHandler);
function pressBeginHandler(event:TouchEvent):void
{
pressTimer.start();
}
square.addEventListener(TouchEvent.TOUCH_END, pressEndHandler);
square.addEventListener(TouchEvent.TOUCH_ROLL_OUT, pressEndHandler);
function pressEndHandler(event:TouchEvent):void
{
pressTimer.stop();
// End your custom code
}
复制代码
两指轻敲
两指轻敲是为图片添加功能的另一种方式。两个手指可以呼出子菜单。
Multitouch.inputMode = MultitouchInputMode.GESTURE;
stage.addEventListener(GestureEvent.GESTURE_TWO_FINGER_TAP, twoFingerTapHandler);
function twoFingerTapHandler(event:GestureEvent):void
{
// Start your custom code
}
复制代码
捏缩放
在地图或照片上面捏缩放(Pinch to Zoom)。
Multitouch.inputMode = MultitouchInputMode.GESTURE;
stage.addEventListener(TransformGestureEvent.GESTURE_ZOOM, zoomHandler);
function zoomHandler(event:TransformGestureEvent):void
{
instance_name_here.scaleX *= event.scaleX;
instance_name_here.scaleY *= event.scaleY;
}
复制代码
摇移事件
如果图片或者列表的大小大于屏幕大小,那么可使用摇移事件(Pan Event)去显示更多内容。
Multitouch.inputMode = MultitouchInputMode.GESTURE;
instance_name_here.addEventListener(TransformGestureEvent.GESTURE_PAN, panHandler);
function panHandler(event:TransformGestureEvent):void
{
event.currentTarget.x += event.offsetX;
event.currentTarget.y += event.offsetY;
}
复制代码
旋转事件
允许用户用两个手指去旋转物品。对于游戏和照片都很有用。
Multitouch.inputMode = MultitouchInputMode.GESTURE;
instance_name_here.addEventListener(TransformGestureEvent.GESTURE_ROTATE, rotateHandler);
function rotateHandler(event:TransformGestureEvent):void
{
event.target.rotation += event.rotation;
}
复制代码
上/下/左/右 快速划
允许用户多屏内容之间转换或者长文本框滚动。
Multitouch.inputMode = MultitouchInputMode.GESTURE;
stage.addEventListener (TransformGestureEvent.GESTURE_SWIPE, swipeHandler);
function swipeHandler(event:TransformGestureEvent):void
{
switch(event.offsetX)
{
case 1:
{
// swiped right
break;
}
case -1:
{
// swiped left
break;
}
}
switch(event.offsetY)
{
case 1:
{
// swiped down
break;
}
case -1:
{
// swiped up
break;
}
}
}
触控事件 vs. 手势
那么触控事件和手势有什么区别呢?嗯,触控事件是设备提供的触摸点原始数据。手势是利用触控事件实现的预设“方案”。比如想改变照片的大小时,你无需跟踪两个触摸点检测他们是靠近还是远离,可以考虑用GESTURE_ZOOM事件实现。
现在让我们更深入去看看ActionScript提供的触控事件 (TOUCH_POINT) 和手势(GESTURE)
鼠标点击 = 轻敲事件
轻敲事件和桌面系统中的鼠标点击作用一样:
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
square.addEventListener(TouchEvent.TOUCH_TAP, tapHandler);
function tapHandler(event:TouchEvent):void
{
// Start your custom code
}
复制代码
点击/拖拽 = Touch Begin/End
当你在移动设备上做点击并且拖动可以使用 TOUCH_BEGIN和TOUCH_END:
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
square.addEventListener(TouchEvent.TOUCH_BEGIN, touchBeginHandler);
var fl_DragBounds:Rectangle = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);
function fl_TouchBeginHandler(event:TouchEvent):void
{
event.target.startTouchDrag(event.touchPointID, false, fl_DragBounds);
}
square.addEventListener(TouchEvent.TOUCH_END, touchEndHandler);
function fl_TouchEndHandler(event:TouchEvent):void
{
event.target.stopTouchDrag(event.touchPointID);
}
复制代码
长按
长按(Long Tap)通常用于显示所选图片上的子菜单。例如,在一张图片上长按可能会激活一个子菜单允许用户保存图片。实现这个功能可以利用一个计时器倒数1秒后显示菜单。
var pressTimer:Timer = new Timer(1000);
pressTimer.addEventListener(TimerEvent.TIMER, pressTimerHandler);
function fl_PressTimerHandler(event:TimerEvent):void
{
// Start your custom code
}
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
square.addEventListener(TouchEvent.TOUCH_BEGIN, pressBeginHandler);
function pressBeginHandler(event:TouchEvent):void
{
pressTimer.start();
}
square.addEventListener(TouchEvent.TOUCH_END, pressEndHandler);
square.addEventListener(TouchEvent.TOUCH_ROLL_OUT, pressEndHandler);
function pressEndHandler(event:TouchEvent):void
{
pressTimer.stop();
// End your custom code
}
复制代码
两指轻敲
两指轻敲是为图片添加功能的另一种方式。两个手指可以呼出子菜单。
Multitouch.inputMode = MultitouchInputMode.GESTURE;
stage.addEventListener(GestureEvent.GESTURE_TWO_FINGER_TAP, twoFingerTapHandler);
function twoFingerTapHandler(event:GestureEvent):void
{
// Start your custom code
}
复制代码
捏缩放
在地图或照片上面捏缩放(Pinch to Zoom)。
Multitouch.inputMode = MultitouchInputMode.GESTURE;
stage.addEventListener(TransformGestureEvent.GESTURE_ZOOM, zoomHandler);
function zoomHandler(event:TransformGestureEvent):void
{
instance_name_here.scaleX *= event.scaleX;
instance_name_here.scaleY *= event.scaleY;
}
复制代码
摇移事件
如果图片或者列表的大小大于屏幕大小,那么可使用摇移事件(Pan Event)去显示更多内容。
Multitouch.inputMode = MultitouchInputMode.GESTURE;
instance_name_here.addEventListener(TransformGestureEvent.GESTURE_PAN, panHandler);
function panHandler(event:TransformGestureEvent):void
{
event.currentTarget.x += event.offsetX;
event.currentTarget.y += event.offsetY;
}
复制代码
旋转事件
允许用户用两个手指去旋转物品。对于游戏和照片都很有用。
Multitouch.inputMode = MultitouchInputMode.GESTURE;
instance_name_here.addEventListener(TransformGestureEvent.GESTURE_ROTATE, rotateHandler);
function rotateHandler(event:TransformGestureEvent):void
{
event.target.rotation += event.rotation;
}
复制代码
上/下/左/右 快速划
允许用户多屏内容之间转换或者长文本框滚动。
Multitouch.inputMode = MultitouchInputMode.GESTURE;
stage.addEventListener (TransformGestureEvent.GESTURE_SWIPE, swipeHandler);
function swipeHandler(event:TransformGestureEvent):void
{
switch(event.offsetX)
{
case 1:
{
// swiped right
break;
}
case -1:
{
// swiped left
break;
}
}
switch(event.offsetY)
{
case 1:
{
// swiped down
break;
}
case -1:
{
// swiped up
break;
}
}
}
相关文章推荐
- [AS3]移动设备上的触控事件和手势
- AS3移动设备上的触控事件和手势
- AS3 移动设备上的触控事件和手势
- 移动设备手势事件库Touch.js使用详解
- 移动设备手势事件库Touch.js
- 移动设备的触控和手势
- 移动设备、手机浏览器Javascript滑动事件代码
- 触控设备手势唤醒的设计思路及其实现
- 网页事件自动适应触控设备
- 移动设备的Web应用程序开发----(事件和输入)
- 新鲜小玩意儿- deviceOrientation移动设备旋转事件
- 移动 - 设备事件
- 关于移动设备上的一些按键值及其对应的事件
- 移动设备、手机浏览器Javascript滑动事件代码(touch事件)
- 腾讯CDC:移动设备手势设计初探
- 移动Web触控事件总结—click的300ms延迟、点透、鬼点击问题
- html5移动设备浏览器触屏事件兼容处理
- 移动开发框架,第【二】弹:Hammer.js 移动设备触摸手势js库
- 移动设备、手机浏览器Javascript滑动事件代码
- 移动设备、手机浏览器Javascript滑动事件代码