ios - 如何在 Adob​​e AIR for iOS 中同时监听点击和手势?

标签 ios flash air multi-touch gesture-recognition

我正在制作一款 iOS 游戏,需要同时检测简单的点击和手势(滑动等)。。在 AIR 中,我只能看到多点触控输入模式的一种设置:TOUCH_POINT(适用于基本点击)和 GESTURE。但我同时需要两者,所以改变模式不是一个选择。如何同时收听两者?

谢谢, 可以。

最佳答案

import flash.events.EventDispatcher;
import flash.events.TouchEvent;
import flash.net.Responder;
import flash.ui.Multitouch;
import flash.ui.MultitouchInputMode;

public class SwipeAndTap extends EventDispatcher
{
    private var fingerX:int;
    private var fingerY:int;
    private var elem:Object;

    public function SwipeAndTap(_elem:Object)
    {
        Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

        elem = _elem;
        elem.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin);
        elem.addEventListener(TouchEvent.TOUCH_MOVE, onTouchMove);
        elem.addEventListener(TouchEvent.TOUCH_END, onTouchEnd);
    }
    private function onTouchBegin(e:TouchEvent):void 
    {
        fingerX = e.stageX;
        fingerY = e.stageY;
    }
    private function onTouchMove(e:TouchEvent):void 
    {
        if(e.stageX > (fingerX+150) && (e.stageY > (fingerY-100) && e.stageY < (fingerY+100) ) )
        {
            // swipe right
            dispatchEvent(new TouchSwipeRight(TouchSwipeRight.SWIPE_RIGHT, e));
        }
        else if(e.stageX < (fingerX-150) && (e.stageY > (fingerY-100) && e.stageY < (fingerY+100) ) )
        {
            // swipe left
            dispatchEvent(new TouchSwipeLeft(TouchSwipeLeft.SWIPE_LEFT, e));
        }
    }

    private function onTouchEnd(e:TouchEvent):void 
    { 
        // e.touchPointID;
        if(e.stageX > (fingerX-40) && e.stageX < (fingerX+40))
        {
            dispatchEvent(new TouchEventTap(TouchEventTap.TAP, e));
            elem.removeEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin);
            elem.removeEventListener(TouchEvent.TOUCH_MOVE, onTouchMove);
            elem.removeEventListener(TouchEvent.TOUCH_END, onTouchEnd);
        }

    }
}

示例:

var SAT:SwipeAndTap = new SwipeAndTap(stage);
    SAT.addEventListener(TouchEventTap.TAP, LangSelected);
    SAT.addEventListener(TouchSwipeRight.SWIPE_RIGHT, ENtoPL);
    SAT.addEventListener(TouchSwipeLeft.SWIPE_LEFT, PLtoEN);

关于ios - 如何在 Adob​​e AIR for iOS 中同时监听点击和手势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11769394/

相关文章:

android - 如何与 Adob​​e Air 的锁屏播放器控件集成?

javascript - Adobe AIR 中的打印功能是什么?

ios - 为什么在设置imageView之前将 "translatesAutoresizingMaskIntoConstraints"设置为false,会显示无图像?

ios - iPhone 分辨率中的下采样和上采样是什么?

ios - MKMapView 放置在 UITableViewCell 内时不显示位置

flash - Haxe:没有帧的关键帧动画

objective-c - iOS Facebook SDK - 最佳实践?

apache-flex - 在具有调整大小功能的新 Air 窗口中加载外部 SWF 应用程序

javascript - 在 302 重定向或嵌入/对象/iframe 标记内的元素(跨域)后获取 flash src

java - java/adobe air中的离线在线应用架构