Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 只允许一定数量的TouchPointID_Actionscript 3_Flash_Actionscript_Actionscript 2 - Fatal编程技术网

Actionscript 3 只允许一定数量的TouchPointID

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事件,所有这些

在touchEvents中,它们可以处理多次触摸,对吗?因此,您可以同时使用多个手指。那么,我如何只允许事件处理一定数量的接触?例如,仅拖动3个正方形,而不是全部5个?(例如,不是我正在做的)

在AS3中,可以使用
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++;
  }
}