2

正如我在本主题中确定的那样,该touchmove事件可能会根据被触摸的元素组合分批发送。

如果我有三个手指分别触摸不同的元素,但我仍然希望能够一起处理所有三个手指的运动(例如,定义这三个元素的共同父元素上的交互),我基本上必须合并来自触摸事件的数据,这些数据可能以touchmove每个设备输入样本的三个事件的“块”形式发出。

虽然一个简单的解决方法是“制作一个大的覆盖元素”并以通常的方式处理它,但我打算追求将复杂 DOM 结构上的复杂操作包装在一段易于部署的代码中的圣杯。

因此很明显,我想要么使用toucheslast-inbound 中列表外的数据touchmove,要么收集changedTouches每个touchmove. 我目前一直在编写一个跟踪触摸标识符的例程,一旦它看到一个重复的,它就会知道我们正在查看touchmove下一组中的第一个(下一个输入刻度)。

这显然不是最理想的,因为我现在在处理输入时引入了长达 16 毫秒的延迟。

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

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

我还能做什么?

4

0 回答 0