【问题标题】:Access touch history when `touchmove` event is captured捕获“touchmove”事件时访问触摸历史记录
【发布时间】:2013-06-20 19:00:35
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: javascript multi-touch gesture touchmove


    【解决方案1】:

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

    1. touchstart 事件中重置它们的历史记录
    2. touchmove 事件内部,将当前坐标作为对象推送到每个数组上,通过identifier 对象的identifier 属性标识。推入数组后,您可以在Touch 对象的pageXpageY 属性中访问坐标,该对象位于event.targetTouches. To only store 10, callslice(-10)` 中。

    【讨论】:

    • 如果我在touchstart 上重置它们的历史记录,我不会丢失所有触摸的历史记录吗?请注意,它们是独立的触摸点,它们的开始/结束时间与其他触摸无关。如果你能给我举个例子,或者写一点代码来演示如何做到这一点,那就太棒了。
    猜你喜欢
    • 2018-04-17
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    相关资源
    最近更新 更多