javascript - 捕获 `touchmove`事件时访问触摸历史记录

标签 javascript multi-touch gesture touchmove

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

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. touchstart 中重置它们的历史记录事件
  2. touchmove 内部事件,将当前坐标作为对象推送到每个数组上,通过 identifier 标识Touch的属性(property)目的。您可以通过pageX访问坐标。和pageY Touch的属性对象可在 event.targetTouches. To only store 10, call 中使用插入数组后,切片(-10)`。

关于javascript - 捕获 `touchmove`事件时访问触摸历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15127242/

相关文章:

android - 未检测到滑动

javascript - Javascript数组-显示编号最小的索引

c++ - Qt 创建对触摸事件敏感的 QML slider

Java - 使用多点触控

Swift:以编程方式模拟泛手势

ios - InterfaceBuilder 目标/操作中的 UIGestureRecognizer

javascript - 将具有多个索引的项目分组到子数组中

javascript - 如何从网页 (HTML/Javascript) 向 Java 应用程序发送简单消息?

在函数体内使用ajax时,Javascript函数未定义错误

iphone - 每个 UIView 的 ExclusiveTouch