守望者--AIR技术交流

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: ANE FlasCC 炼金术
查看: 1383|回复: 0

[移动平台] AS3移动设备上的触控事件和手势

[复制链接]
  • TA的每日心情
    擦汗
    2018-4-10 15:18
  • 签到天数: 447 天

    [LV.9]以坛为家II

    1742

    主题

    2094

    帖子

    13万

    积分

    超级版主

    Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

    威望
    562
    贡献
    29
    金币
    51757
    钢镚
    1422

    开源英雄守望者

    发表于 2015-4-5 22:11:41 | 显示全部楼层 |阅读模式

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

    触控事件 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. {
    5. // Start your custom code
    6. }
    复制代码

    点击/拖拽 = 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. {
    6.     event.target.startTouchDrag(event.touchPointID, false, fl_DragBounds);
    7. }
    8. square.addEventListener(TouchEvent.TOUCH_END, touchEndHandler);
    9. function fl_TouchEndHandler(event:TouchEvent):void
    10. {
    11.     event.target.stopTouchDrag(event.touchPointID);
    12. }
    复制代码


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

    1. var pressTimer:Timer = new Timer(1000);
    2. pressTimer.addEventListener(TimerEvent.TIMER, pressTimerHandler);
    3. function fl_PressTimerHandler(event:TimerEvent):void
    4. {
    5.     // Start your custom code
    6. }
    7. Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
    8. square.addEventListener(TouchEvent.TOUCH_BEGIN, pressBeginHandler);
    9. function pressBeginHandler(event:TouchEvent):void
    10. {
    11.     pressTimer.start();
    12. }
    13. square.addEventListener(TouchEvent.TOUCH_END, pressEndHandler);
    14. square.addEventListener(TouchEvent.TOUCH_ROLL_OUT, pressEndHandler);
    15. function pressEndHandler(event:TouchEvent):void
    16. {
    17.     pressTimer.stop();
    18.     // End your custom code
    19. }
    复制代码


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

    1. Multitouch.inputMode = MultitouchInputMode.GESTURE;
    2. stage.addEventListener(GestureEvent.GESTURE_TWO_FINGER_TAP, twoFingerTapHandler);
    3. function twoFingerTapHandler(event:GestureEvent):void
    4. {
    5. // Start your custom code
    6. }
    复制代码



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

    1. Multitouch.inputMode = MultitouchInputMode.GESTURE;
    2. stage.addEventListener(TransformGestureEvent.GESTURE_ZOOM, zoomHandler);
    3. function zoomHandler(event:TransformGestureEvent):void
    4. {
    5.     instance_name_here.scaleX *= event.scaleX;
    6.     instance_name_here.scaleY *= event.scaleY;
    7. }
    复制代码



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

    1. Multitouch.inputMode = MultitouchInputMode.GESTURE;
    2. instance_name_here.addEventListener(TransformGestureEvent.GESTURE_PAN, panHandler);
    3. function panHandler(event:TransformGestureEvent):void
    4. {
    5.     event.currentTarget.x += event.offsetX;
    6.     event.currentTarget.y += event.offsetY;
    7. }
    复制代码


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

    1. Multitouch.inputMode = MultitouchInputMode.GESTURE;
    2. instance_name_here.addEventListener(TransformGestureEvent.GESTURE_ROTATE, rotateHandler);
    3. function rotateHandler(event:TransformGestureEvent):void
    4. {
    5.     event.target.rotation += event.rotation;
    6. }
    复制代码


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

    1. Multitouch.inputMode = MultitouchInputMode.GESTURE;
    2. stage.addEventListener (TransformGestureEvent.GESTURE_SWIPE, swipeHandler);
    3. function swipeHandler(event:TransformGestureEvent):void
    4. {
    5.     switch(event.offsetX)
    6.     {
    7.         case 1:
    8.         {
    9.             // swiped right
    10.             break;
    11.         }
    12.         case -1:
    13.         {
    14.             // swiped left
    15.             break;
    16.         }
    17.     }
    18.     switch(event.offsetY)
    19.     {
    20.         case 1:
    21.         {
    22.             // swiped down
    23.             break;
    24.         }
    25.         case -1:
    26.         {
    27.             // swiped up
    28.             break;
    29.         }
    30.     }
    31. }
    复制代码




    本文来自:http://bbs.9ria.com/thread-287495-1-1.html


    守望者AIR技术交流社区(www.airmyth.com)
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    
    关闭

    站长推荐上一条 /4 下一条

    QQ|手机版|Archiver|网站地图|小黑屋|守望者 ( 京ICP备14061876号

    GMT+8, 2019-10-23 17:36 , Processed in 0.046550 second(s), 31 queries .

    守望者AIR

    守望者AIR技术交流社区

    本站成立于 2014年12月31日

    快速回复 返回顶部 返回列表