我正在制作iOS游戏,我需要检测简单的点击和手势(滑动等)同时。在AIR中,我只能看到多点触控输入模式的一个设置:TOUCH_POINT(适用于基本点击)和GESTURE。但我同时需要两个,所以改变模式不是一个选择。我怎么能同时听这两个?
谢谢, 可以。
答案 0 :(得分:3)
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);
答案 1 :(得分:1)
您可以使用标准鼠标事件进行点击。
这将保持手势多点触控输入模式。
否则,GitHub上的Gestouch framework: NUI gestures detection framework for mouse, touch and multitouch AS3 development可能会引起人们的兴趣。
另请注意触摸/手势事件模型的performance impacts:
触摸和手势输入都可以是多点触控输入,具体取决于 用户的设备。 ActionScript提供用于处理触摸事件的API, 手势事件和单独跟踪的多点触控触摸事件 输入
注意:聆听触摸和手势事件会消耗很多 处理资源量(相当于渲染多个帧) 每秒),取决于计算设备和操作系统。 当您实际不需要时,通常最好使用鼠标事件 触摸或手势提供的额外功能。当你使用时 触摸或手势事件,考虑减少图形量 可能发生的更改,尤其是在可以调度此类事件时 快速,如平移,旋转或缩放操作。例如,你 可以在用户调整组件大小时停止组件内的动画 使用缩放手势。