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