1

我正在尝试学习如何在浏览器中使用touchmove事件来检测多点触控手势。当一个 touchmove 事件被捕获时,我可以获得当前触摸点的列表。然而,这对于检测手势不是很有用。我喜欢获取触摸事件的历史。例如,我想获取每个当前不同接触点之前的最后 10 个接触点(如果可用)的列表。我画了下图,试图形象化我所追求的:

在此处输入图像描述

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

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

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

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

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

4

1 回答 1

1

是的,您可以将先前的位置存储在数组中并对其进行迭代。

  1. touchstart在事件中重置他们的历史
  2. touchmove事件内部,将当前坐标作为对象推送到通过对象的identifier属性标识的每个数组上Touch。推入数组后,您可以访问 slice(-10)`中可用对象的坐标pageXpageY属性。Touchevent.targetTouches. To only store 10, call
于 2013-06-20T11:00:35.817 回答