如何监听踢踏舞和手势在Adobe AIR中,同时为iOS?(How to listen for bo

2019-06-26 16:23发布

我想提出的是iOS游戏,我需要两个简单的攻丝和手势(滑动等) 同时检测。 在AIR中,我只看到了多点触摸输入模式一个设置:TOUCH_POINT(工作基本攻丝)和手势。 但我需要都在同一时间,以便改变模式是不是一种选择。 我怎么能听双方在同一时间?

谢谢你,可以。

Answer 1:

您可以使用标准的鼠标事件水龙头。

这将保持手势多点触摸输入模式。

否则, Gestouch框架:NUI手势鼠标,触控和多点触控AS3开发检测框架在GitHub上可能会感兴趣。

另外要注意性能影响触摸/手势事件模型:

触摸和手势输入可以是根据用户的设备上的多点触摸输入。 ActionScript提供API,用于处理触摸事件,手势事件,并为多点触摸输入单独跟踪的触摸事件。

注意:监听触摸和手势事件可以消耗的处理资源的量显著(相当于渲染每秒数帧),这取决于所述计算设备和操作系统上。 它往往是更好地使用鼠标事件时,你实际上并不需要通过触摸或手势提供的额外功能。 当你使用触摸或手势事件,考虑减少可能发生的图形更改的数量,尤其是当这样的事件能迅速平移期间出动,如,旋转或缩放操作。 例如,你可以在组件中,而用户使用缩放手势调整它的大小停止动画。



Answer 2:

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);


Answer 3:

我不太清楚,如果你需要设置TOUCH_POINT基本攻丝。 它应该工作一样好,如果你有GESTURE集。 你可以用鼠标事件模拟。

在任何情况下,默认的AIR手势支持并不好反正,所以它可能不是这样的,所以我建议你寻找到Gestouch库。 你得到更为复杂的手势支持,很好地工作。 我一直在使用它在我的Flex / AS3项目多月,我与它很高兴。



文章来源: How to listen for both tap and gestures at the same time in Adobe AIR for iOS?