正如我在this topic中确定的那样,touchmove
事件可能会被批量发送,具体取决于被触摸的元素的组合。
如果我有三个手指,每个手指接触不同的元素,但我仍然希望能够将所有三个手指的动作处理在一起(例如,在这3个元素的共同父元素上定义交互),我基本上会必须合并来自触摸事件的数据,这些数据可能在每个设备输入样本的三个touchmove
事件的“丛”中发布。
虽然一个简单的解决方法就是“制作一个大的覆盖元素”并以通常的方式处理它,但我打算在一个简单的部署代码中包含对复杂DOM结构进行复杂操作的圣杯。 。
因此很明显,我想要在最后入站touches
中使用touchmove
列表中的数据,或收集每个changedTouches
的{{1}}内容}}。我目前正在编写一个跟踪触摸标识符的例程,一旦它看到一个重复,它就会知道我们正在查看下一组中的第一个touchmove
(下一个输入标记)。
这显然是次优的,因为我现在已经在处理输入时引入了长达16ms的延迟。
我确实想出了一些可行的方法:如果按照触摸touchmove
所在的顺序发送事件,那么当我处理以触摸结束的identifiers
列表时对应于最高编号的changedTouches
创建(我从identifier
事件中知道这一点),那么这足以表明我已经通过touchstart
收到了所有的来自硬件的当前时间步的信息。
更新:我实现的是一个跟踪一个手指的变量,一旦它在touchmoves
touchmove
中看到该手指,它就会运行一个循环处理changedTouches
中的所有值。这完全无法提供正确的信息。它检查的一次触摸可能不会移动,在这种情况下,不会为它生成touches
。
我还可以做些什么?