2013-02-28 29 views
1

我正试图学习如何在浏览器中使用touchmove event来检测多点触摸手势。当触摸移动事件被捕获时,我可以获得当前触摸点的列表。但是,这对检测手势并不是很有用。我喜欢了解触摸事件的历史。例如,我想获取每个当前不同触摸点之前出现的最近10个触摸点(如果可用)的列表。我画下图,试图想象我是什么后:捕获touchmove事件时访问触摸历史记录

enter image description here

正如我在这个场景下,用户在屏幕上以两种不同的方式拖着两个不同的手指说(手指不同的手),我只收到touchmove事件中的两个触点。是否有可能访问两点之前已经达到的点的历史记录AB

这里是代码捕获touchmove事件中的相关位:

document.addEventListener('touchmove', touchMove, false); 

function touchMove(e) { 
    console.log("length is: ", e.touches.length); 
    e.preventDefault(); 
} 

请不要建议第三方库 - 我的目标是学习如何定义和发现自己的自定义真正的多点触控手势。

回答

1

是的,您可以将之前的位置存储在数组中并遍历它们。

  1. 复位它们的历史在touchstart事件
  2. 里面touchmove事件的,按当前坐标作为对象到每个阵列,经由Touch对象的identifier属性标识。在您推入阵列之后,您可以访问event.targetTouches. To only store 10, call slice(-10)`中可用的Touch对象的pageXpageY属性的坐标。
+1

如果我在touchstart上重置它们的历史,我会不会触发所有触摸的历史记录?请注意,它们是独立的触摸点,其开始/结束时间与其他触摸无关。如果你能指点我一个例子,或者写一点代码来演示如何做到这一点,那将是非常棒的。 – Aras 2013-06-21 02:14:27