原创声明:本文为作者原创,未经允许不得转载,经授权转载需注明作者和出处
以初学者的视角看问题,感谢各路大神的纠错与指教!
模拟器只能用鼠标点,所以同一时间只能是一点(Touches数组只有一个对象)。
其实真机同一时间可以有多个触点。
安卓/IOS手机至少2点触摸,苹果支持5点触摸。(Touches数组可以有多个多个对象)。
touches
事件发生那一刻,当前停留在屏幕中的触摸点信息
模拟器的只支持鼠标单点,所以这点就在“引起事件”的这个组件上。
当真机有多点触摸的时候,事件发生那一刻,记录屏幕上所有的手指触摸点信息。
即使这个触摸点不在“引起事件”的这个组件上。
changedTouches
事件发生那一刻,当前变化的触摸点信息
“涉及当前事件的,页面上最新更改的”的 所有手指(触摸点)的列表
如果你在使用touchend,那么这个属性 非常重要。
在这种情况下,屏幕上都不会再出现手指,因此touches应该为空,但你仍然可以通过查看 changedTouches数组来了解最后发生的事情。
touchstart事件
touches:
触摸开始事件那一刻,屏幕上的触摸点为A
changedTouches:
触摸开始时,涉及当前事件的触摸点也为A
所以:touches数组和changedTouches数组相同
touchend事件
touches:
触摸结束事件那一刻,屏幕上已经没触摸点了
changedTouches:
涉及此“触摸结束事件”的触摸点也为A,
所以touches数组为空,changedTouches数组为A的信息
比如div1
, div2
,只有div2
绑定了touchstart
事件
开始
放下一个手指在div2
上,触发了touchstart
事件,
这个时候,两个集合的内容是一样的,都包含这个手指的touch。
然后
再放下两个手指一个在div1
上,一个在div2
上,这个时候又会触发事件。
但changedTouches
里面只包含第二个第三个手指的信息,因为第一个没有发生变化。
而touches
包含屏幕上所有手指的信息,也就是三个手指。
identifier
一个数值,唯一标识触摸会话(touch session)中的当前手指。
模拟器上只支持一点,作用不是很大。
在真机支持多点时,用于识别各个手指接触点。