跟踪多个触点没有比跟踪单个接触难多少。这个TouchEvent.touchPointID属性是每个唯一的ID独特的触摸发生。当TouchEvent.TOUCH_BEGIN事件被触发时这个ID被分配时,可用来追踪在屏幕上独特的一面。

     对于每一个新的接触点被检测到,touchPointID就会递增。例如,如果你要放置两个手指在屏幕上拖动他们身边,你会
接 收触摸与touchPointID值事件对象1和2。如果你的手指抬起,放在他们回来在屏幕上,你会得到touchPointID值3和4。这使得它有点 难以跟踪特定手指因为touchPointID2不一定平均手指2。为了追踪特定的手指,你会需要存储的touchPointIDs目前正在用在数组或字 典对象,你会看到在下面的例子。你把这个对象的ID在TouchEvent.TOUCH_BEGIN事件和删除它在 TouchEvent.TOUCH_END事件。每个触摸屏的设备有不同数量的触动它可以检测一次。
帮助说明:

Multitouch 类管理并提供有关当前环境支持用于处理来自用户输入设备的接触的信息,包括有两个或多个触点(例如,用户在触摸屏上使用的手指)的接触。当用户与带有触摸 屏的移动电话或绘图板等设备交互时,用户通常使用手指或指针设备接触屏幕。有很多种指针设备,如鼠标或笔针,其中很多种设备在某个应用程序中仅具有一个触 控点。对于具有一个触控点的指针设备,用户交互事件可处理为鼠标事件,或者使用基本 touch 事件集(称为“接触点”事件)。但是,对于具有多个触控点以及执行复杂运动的指针设备,如人手,Flash 运行时支持其他事件处理 API 集(称为 gesture 事件)。使用这些 gesture 事件处理用户交互的 API 包括下列类:
flash.events.TouchEvent
flash.events.GestureEvent
flash.events.GesturePhase
flash.events.TransformGestureEvent
flash.events.PressAndTapGestureEvent

 

实例:

/*
标 识用于触摸和手势事件处理的多点触控模式。使用此属性管理是否将事件调度为具有多个触控点或单一触控点(如点击)或没有触控点(触控 处理为鼠标事件)的 touch 事件和针对不同手势(如旋转和平移)的特定事件。要设置此属性,请使用 flash.ui.MultitouchInputMode 类中的值。

使用 Multitouch.inputMode 属性为运行时确定触摸输入类型。输入模式可以是以下三个选项之一:
1:无 对触摸事件不提供特殊处理。设置:Multitouch.inputMode=MultitouchInputMode.NONE 并使用 MouseEvent 类处理输入。
2:单个触摸点 分别解释所有触摸输入,并跟踪和处理所有触摸点。设置:Multitouch.inputMode=MultitouchInputMode.TOUCH_POINT 并使用 TouchEvent 类处理输入
3:动作输入 设备或操作系统将输入解释为手指沿屏幕移动的一种复杂形式。设备或操作系统将移动集体分配给单个动作输入事件。
设置:Multitouch.inputMode=MultitouchInputMode.GESTURE 并使用 TransformGestureEvent、PressAndTapGestureEvent 或 GestureEvent 类处理输入。
*/

Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
var colors:Array = [ 0x731931, 0x401323, 0x262226, 0x54594C, 0x888C65];
var sprites:Dictionary = new Dictionary();
var touchCount:int = 0;
stage.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin);
stage.addEventListener(TouchEvent.TOUCH_MOVE, onTouchMove);
stage.addEventListener(TouchEvent.TOUCH_END, onTouchEnd);
function onTouchBegin( event:TouchEvent ):void
{
var mc:Sprite = new Sprite();
addChild( mc );

mc.graphics.lineStyle( 5, colors[ touchCount ] );
mc.graphics.moveTo( event.stageX, event.stageY );
touchCount++;
sprites[ event.touchPointID ] = mc;
}
function onTouchMove( event:TouchEvent ):void
{
var mc:Sprite = sprites[ event.touchPointID ] as Sprite;
mc.graphics.lineTo( event.stageX, event.stageY );
}
function onTouchEnd( event:TouchEvent ):void
{
var mc:Sprite = sprites[ event.touchPointID ] as Sprite;
this.removeChild( mc );
touchCount–;
delete sprites[ event.touchPointID ];
}

    博视界科技专注于沉浸式全景数字餐厅、全息酒店宴会厅,旨在帮传统餐饮用科技玩跨界,欢迎咨询!

官方网站:www.boseetech.com

联系方式:    

微信联系我:


    【声明】转载本文请注明出处三人行设计,并保留有效链接:FLASH中如何跟踪多个触摸点 http://www.srxtuan.com/archives/1433,谢谢!

猜您还喜欢: