捕获“touchmove”事件时访问触摸历史记录

时间:2013-02-28 04:01:10

标签: javascript multi-touch gesture touchmove

我正在尝试学习如何在浏览器中使用touchmove event来检测多点触控手势。当捕捉到touchmove事件时,我可以获得当前触摸点的列表。然而,这对于检测手势并不是非常有用。我想了解触摸事件的历史。例如,我想获得每个当前不同触摸点之前的最后10个触摸点(如果可用)的列表。我绘制了下图,试图想象我的目标:

enter image description here

正如我在这种场景中所说的那样,用户在屏幕上以两种不同的模式(不同手的手指)拖动两个单独的手指,我在touchmove事件中只收到两个触摸点。是否有可能在到达 A B 之前访问两个点中每个点的历史记录?

以下是捕获touchmove事件的相关代码:

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

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

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

1 个答案:

答案 0 :(得分:1)

是的,您可以将先前的位置存储在数组中并迭代它们。

  1. touchstart事件
  2. 中重置它们的历史记录
  3. touchmove事件的内部,将当前坐标作为对象推送到每个数组,通过identifier对象的Touch属性进行标识。在推入阵列后,您可以访问pageX切片(-10)`中可用的pageY对象的Touchevent.targetTouches. To only store 10, call属性坐标。< / LI>