我想提出的是iOS游戏,我需要两个简单的攻丝和手势(滑动等) 同时检测。 在AIR中,我只看到了多点触摸输入模式一个设置:TOUCH_POINT(工作基本攻丝)和手势。 但我需要都在同一时间,以便改变模式是不是一种选择。 我怎么能听双方在同一时间?
谢谢你,可以。
我想提出的是iOS游戏,我需要两个简单的攻丝和手势(滑动等) 同时检测。 在AIR中,我只看到了多点触摸输入模式一个设置:TOUCH_POINT(工作基本攻丝)和手势。 但我需要都在同一时间,以便改变模式是不是一种选择。 我怎么能听双方在同一时间?
谢谢你,可以。
您可以使用标准的鼠标事件水龙头。
这将保持手势多点触摸输入模式。
否则, Gestouch框架:NUI手势鼠标,触控和多点触控AS3开发检测框架在GitHub上可能会感兴趣。
另外要注意性能影响触摸/手势事件模型:
触摸和手势输入可以是根据用户的设备上的多点触摸输入。 ActionScript提供API,用于处理触摸事件,手势事件,并为多点触摸输入单独跟踪的触摸事件。
注意:监听触摸和手势事件可以消耗的处理资源的量显著(相当于渲染每秒数帧),这取决于所述计算设备和操作系统上。 它往往是更好地使用鼠标事件时,你实际上并不需要通过触摸或手势提供的额外功能。 当你使用触摸或手势事件,考虑减少可能发生的图形更改的数量,尤其是当这样的事件能迅速平移期间出动,如,旋转或缩放操作。 例如,你可以在组件中,而用户使用缩放手势调整它的大小停止动画。
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);
我不太清楚,如果你需要设置TOUCH_POINT
基本攻丝。 它应该工作一样好,如果你有GESTURE
集。 你可以用鼠标事件模拟。
在任何情况下,默认的AIR手势支持并不好反正,所以它可能不是这样的,所以我建议你寻找到Gestouch库。 你得到更为复杂的手势支持,很好地工作。 我一直在使用它在我的Flex / AS3项目多月,我与它很高兴。