Actionscript 3 只允许一定数量的TouchPointID
在touchEvents中,它们可以处理多次触摸,对吗?因此,您可以同时使用多个手指。那么,我如何只允许事件处理一定数量的接触?例如,仅拖动3个正方形,而不是全部5个?(例如,不是我正在做的)在AS3中,可以使用Actionscript 3 只允许一定数量的TouchPointID,actionscript-3,flash,actionscript,actionscript-2,Actionscript 3,Flash,Actionscript,Actionscript 2,在touchEvents中,它们可以处理多次触摸,对吗?因此,您可以同时使用多个手指。那么,我如何只允许事件处理一定数量的接触?例如,仅拖动3个正方形,而不是全部5个?(例如,不是我正在做的)在AS3中,可以使用TouchEvent.touchPointID。从官方文件: Flash运行时为每个触摸点分配一个唯一的触摸点ID 值。 … 使用touchPointID属性管理整个触摸序列。一个触摸序列有一个touchBegin事件、零个或多个touchMove事件和一个touchEnd事件,所有这些
TouchEvent.touchPointID
。从官方文件:
Flash运行时为每个触摸点分配一个唯一的触摸点ID
值。…
使用
touchPointID
属性管理整个触摸序列。一个触摸序列有一个touchBegin
事件、零个或多个touchMove
事件和一个touchEnd
事件,所有这些事件都具有相同的touchPointID
值
基本上,您应该只跟踪您感兴趣的触摸序列(例如:同时只跟踪3个不同的触摸)。因此,您可以使用索引来存储这些ID,并让您的触摸处理程序对其进行检查,以跳过或不跳过特定序列
一些快速绘制的代码:
// allocate a counter and a dictionary to be used as a whitelist and
var sequencesLeft : int = 3;
var currSequences : Dictionary = new Dictionary();
...
mySprite..addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin);
mySprite..addEventListener(TouchEvent.TOUCH_MOVE, onTouchMove);
mySprite..addEventListener(TouchEvent.TOUCH_END, onTouchEnd);
...
function trackSequence(event:TouchEvent, add : Boolean = false) : Boolean {
if( add && counter == 0 )
return false;
var val : String = currSequence[ event.touchPointID ];
if( add && !val ) {
currSequences[ event.touchPointID ] = "" + counter--;
return true;
}
return val != null;
}
function onTouchBegin(event:TouchEvent) {
trackSequence( event, true );
}
function onTouchMove(event:TouchEvent) {
if( !trackSequence( event ) )
return;
else {
/* do whatever you want */
}
}
function onTouchEnd(event:TouchEvent) {
if( trackSequence( event ) ) {
delete currSequences[ event.touchPointID ];
counter++;
}
}