原創聲明:本文為作者原創,未經允許不得轉載,經授權轉載需注明作者和出處
以初學者的視角看問題,感謝各路大神的糾錯與指教!
模擬器只能用鼠標點,所以同一時間只能是一點(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)中的當前手指。
模擬器上只支持一點,作用不是很大。
在真機支持多點時,用于識別各個手指接觸點。