原創(chuàng)聲明:本文為作者原創(chuàng),未經(jīng)允許不得轉(zhuǎn)載,經(jīng)授權(quán)轉(zhuǎn)載需注明作者和出處
以初學(xué)者的視角看問題,感謝各路大神的糾錯(cuò)與指教!
模擬器只能用鼠標(biāo)點(diǎn),所以同一時(shí)間只能是一點(diǎn)(Touches數(shù)組只有一個(gè)對(duì)象)。
其實(shí)真機(jī)同一時(shí)間可以有多個(gè)觸點(diǎn)。
安卓/IOS手機(jī)至少2點(diǎn)觸摸,蘋果支持5點(diǎn)觸摸。(Touches數(shù)組可以有多個(gè)多個(gè)對(duì)象)。
touches
事件發(fā)生那一刻,當(dāng)前停留在屏幕中的觸摸點(diǎn)信息
模擬器的只支持鼠標(biāo)單點(diǎn),所以這點(diǎn)就在“引起事件”的這個(gè)組件上。
當(dāng)真機(jī)有多點(diǎn)觸摸的時(shí)候,事件發(fā)生那一刻,記錄屏幕上所有的手指觸摸點(diǎn)信息。
即使這個(gè)觸摸點(diǎn)不在“引起事件”的這個(gè)組件上。
changedTouches
事件發(fā)生那一刻,當(dāng)前變化的觸摸點(diǎn)信息
“涉及當(dāng)前事件的,頁(yè)面上最新更改的”的 所有手指(觸摸點(diǎn))的列表
如果你在使用touchend,那么這個(gè)屬性 非常重要。
在這種情況下,屏幕上都不會(huì)再出現(xiàn)手指,因此touches應(yīng)該為空,但你仍然可以通過查看 changedTouches數(shù)組來了解最后發(fā)生的事情。
touchstart事件
touches:
觸摸開始事件那一刻,屏幕上的觸摸點(diǎn)為A
changedTouches:
觸摸開始時(shí),涉及當(dāng)前事件的觸摸點(diǎn)也為A
所以:touches數(shù)組和changedTouches數(shù)組相同
touchend事件
touches:
觸摸結(jié)束事件那一刻,屏幕上已經(jīng)沒觸摸點(diǎn)了
changedTouches:
涉及此“觸摸結(jié)束事件”的觸摸點(diǎn)也為A,
所以touches數(shù)組為空,changedTouches數(shù)組為A的信息
比如div1
, div2
,只有div2
綁定了touchstart
事件
開始
放下一個(gè)手指在div2
上,觸發(fā)了touchstart
事件,
這個(gè)時(shí)候,兩個(gè)集合的內(nèi)容是一樣的,都包含這個(gè)手指的touch。
然后
再放下兩個(gè)手指一個(gè)在div1
上,一個(gè)在div2
上,這個(gè)時(shí)候又會(huì)觸發(fā)事件。
但changedTouches
里面只包含第二個(gè)第三個(gè)手指的信息,因?yàn)榈谝粋€(gè)沒有發(fā)生變化。
而touches
包含屏幕上所有手指的信息,也就是三個(gè)手指。
identifier
一個(gè)數(shù)值,唯一標(biāo)識(shí)觸摸會(huì)話(touch session)中的當(dāng)前手指。
模擬器上只支持一點(diǎn),作用不是很大。
在真機(jī)支持多點(diǎn)時(shí),用于識(shí)別各個(gè)手指接觸點(diǎn)。