如何确定我正在处理最后一次touchmove事件?

时间:2013-01-06 22:43:15

标签: javascript html5 javascript-events multi-touch touchmove

正如我在this topic中确定的那样,touchmove事件可能会被批量发送,具体取决于被触摸的元素的组合。

如果我有三个手指,每个手指接触不同的元素,但我仍然希望能够将所有三个手指的动作处理在一起(例如,在这3个元素的共同父元素上定义交互),我基本上会必须合并来自触摸事件的数据,这些数据可能在每个设备输入样本的三个touchmove事件的“丛”中发布。

虽然一个简单的解决方法就是“制作一个大的覆盖元素”并以通常的方式处理它,但我打算在一个简单的部署代码中包含对复杂DOM结构进行复杂操作的圣杯。 。

因此很明显,我想要在最后入站touches中使用touchmove列表中的数据,或收集每个changedTouches的{​​{1}}内容}}。我目前正在编写一个跟踪触摸标识符的例程,一旦它看到一个重复,它就会知道我们正在查看下一组中的第一个touchmove(下一个输入标记)。

这显然是次优的,因为我现在已经在处理输入时引入了长达16ms的延迟。

我确实想出了一些可行的方法:如果按照触摸touchmove所在的顺序发送事件,那么当我处理以触摸结束的identifiers列表时对应于最高编号的changedTouches创建(我从identifier事件中知道这一点),那么这足以表明我已经通过touchstart收到了所有的来自硬件的当前时间步的信息。

更新:我实现的是一个跟踪一个手指的变量,一旦它在touchmoves touchmove中看到该手指,它就会运行一个循环处理changedTouches中的所有值。这完全无法提供正确的信息。它检查的一次触摸可能不会移动,在这种情况下,不会为它生成touches

我还可以做些什么?

0 个答案:

没有答案