AS3移动设备上的触控事件和手势(转)

来源:互联网 发布:淘宝客服催单用语 编辑:程序博客网 时间:2024/05/20 18:01

当涉及到移动设备的时候,简单鼠标点击的日子已经一去不复返了。实际上,有很多很酷触控事件和手势真的可以扩展应用程序的功能。

触控事件 vs. 手势
那么触控事件和手势有什么区别呢?嗯,触控事件是设备提供的触摸点原始数据。手势是利用触控事件实现的预设“方案”。比如想改变照片的大小时,你无需跟踪两个触摸点检测他们是靠近还是远离,可以考虑用GESTURE_ZOOM事件实现。


现在让我们更深入去看看ActionScript提供的触控事件 (TOUCH_POINT) 和手势(GESTURE)


鼠标点击 = 轻敲事件
轻敲事件和桌面系统中的鼠标点击作用一样:

  1. Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT; 
  2. square.addEventListener(TouchEvent.TOUCH_TAP, tapHandler); 
  3. function tapHandler(event:TouchEvent):void

  4. // Start your custom code 
  5. }
复制代码

点击/拖拽 = Touch Begin/End
当你在移动设备上做点击并且拖动可以使用 TOUCH_BEGIN和TOUCH_END:

  1. Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT; 
  2. square.addEventListener(TouchEvent.TOUCH_BEGIN, touchBeginHandler); 
  3. var fl_DragBounds:Rectangle = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight); 
  4. function fl_TouchBeginHandler(event:TouchEvent):void

  5.     event.target.startTouchDrag(event.touchPointID, false, fl_DragBounds); 

  6. square.addEventListener(TouchEvent.TOUCH_END, touchEndHandler); 
  7. function fl_TouchEndHandler(event:TouchEvent):void

  8.     event.target.stopTouchDrag(event.touchPointID); 
  9. }
复制代码


长按
长按(Long Tap)通常用于显示所选图片上的子菜单。例如,在一张图片上长按可能会激活一个子菜单允许用户保存图片。实现这个功能可以利用一个计时器倒数1秒后显示菜单。

  1. var pressTimer:Timer = new Timer(1000); 
  2. pressTimer.addEventListener(TimerEvent.TIMER, pressTimerHandler); 
  3. function fl_PressTimerHandler(event:TimerEvent):void

  4.     // Start your custom code 

  5. Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT; 
  6. square.addEventListener(TouchEvent.TOUCH_BEGIN, pressBeginHandler); 
  7. function pressBeginHandler(event:TouchEvent):void

  8.     pressTimer.start(); 

  9. square.addEventListener(TouchEvent.TOUCH_END, pressEndHandler); 
  10. square.addEventListener(TouchEvent.TOUCH_ROLL_OUT, pressEndHandler); 
  11. function pressEndHandler(event:TouchEvent):void

  12.     pressTimer.stop(); 
  13.     // End your custom code 
  14. }
复制代码


两指轻敲
两指轻敲是为图片添加功能的另一种方式。两个手指可以呼出子菜单。

  1. Multitouch.inputMode = MultitouchInputMode.GESTURE; 
  2. stage.addEventListener(GestureEvent.GESTURE_TWO_FINGER_TAP, twoFingerTapHandler); 
  3. function twoFingerTapHandler(event:GestureEvent):void

  4. // Start your custom code 
  5. }
复制代码


捏缩放
在地图或照片上面捏缩放(Pinch to Zoom)。

  1. Multitouch.inputMode = MultitouchInputMode.GESTURE; 
  2. stage.addEventListener(TransformGestureEvent.GESTURE_ZOOM, zoomHandler); 
  3. function zoomHandler(event:TransformGestureEvent):void

  4.     instance_name_here.scaleX *= event.scaleX; 
  5.     instance_name_here.scaleY *= event.scaleY; 
  6. }
复制代码


摇移事件
如果图片或者列表的大小大于屏幕大小,那么可使用摇移事件(Pan Event)去显示更多内容。

  1. Multitouch.inputMode = MultitouchInputMode.GESTURE; 
  2. instance_name_here.addEventListener(TransformGestureEvent.GESTURE_PAN, panHandler); 
  3. function panHandler(event:TransformGestureEvent):void

  4.     event.currentTarget.x += event.offsetX; 
  5.     event.currentTarget.y += event.offsetY; 
  6. }
复制代码

旋转事件
允许用户用两个手指去旋转物品。对于游戏和照片都很有用。

  1. Multitouch.inputMode = MultitouchInputMode.GESTURE; 
  2. instance_name_here.addEventListener(TransformGestureEvent.GESTURE_ROTATE, rotateHandler); 
  3. function rotateHandler(event:TransformGestureEvent):void

  4.     event.target.rotation += event.rotation; 
  5. }
复制代码

上/下/左/右 快速划
允许用户多屏内容之间转换或者长文本框滚动。

  1. Multitouch.inputMode = MultitouchInputMode.GESTURE; 
  2. stage.addEventListener (TransformGestureEvent.GESTURE_SWIPE, swipeHandler); 
  3. function swipeHandler(event:TransformGestureEvent):void

  4.     switch(event.offsetX) 
  5.     { 
  6.         case 1: 
  7.         { 
  8.             // swiped right 
  9.             break; 
  10.         } 
  11.         case -1: 
  12.         { 
  13.             // swiped left 
  14.             break; 
  15.         } 
  16.     } 
  17.     switch(event.offsetY) 
  18.     { 
  19.         case 1: 
  20.         { 
  21.             // swiped down 
  22.             break; 
  23.         } 
  24.         case -1: 
  25.         { 
  26.             // swiped up 
  27.             break; 
  28.         } 
  29.     } 
  30. }
0 0
原创粉丝点击