您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關如何捕獲Mac觸摸板雙指事件的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
捕獲Mac觸摸板雙指事件
例如:jquery.mousewheel.js(添加跨瀏覽器的鼠標滾輪支持),給得太簡單,沒有處理Mac雙指行為,所以不能用。
目標
獲取Mac觸摸板雙指行為,具體有兩個,一個是實時拖動路線,二是手勢(上、下、左、右、放大、縮小)。
難點
雙指行為只會觸發mousewheel事件,其他什么的touch,mouse都不會觸發,只能從這個下手。
雙指的特性
1.在快速滑動過程中,deltaX、deltaY值的最初值的正負是與滑動方向不同的。
2.在緩慢滑動過程中,deltaX、deltaY值的值域是非常小的,一般在于[-3,3]。
3.在1s內,mousewheel事件大概觸發100次左右。
4.滑動過程中,數值會有抖動問題。
實現拖動路線思路(Path)
針對快速滑動
1.deltaX、deltaY值的最初值的正負是與滑動方向不同的這部分數據要舍棄。(因為不是真正方向)
2.每次觸發的deltaX、deltaY值兩兩相減,結果值如果與方向不同,則舍棄。
3.剩下的差值就是方向挪動距離。
4.兩個方向的所有差值相加,共兩組,哪組值大取哪組,正負決定方向。
針對緩慢滑動
1.由于deltaX、deltaY值的值域是非常小,所以都保留,但值與方向不同的,也舍棄。
2.兩個方向的所有差值相加,共兩組,哪組值大取哪組,正負決定方向。
實現手勢思路(Gesture)
在上面的基礎上,記錄一段時間內deltaX、deltaY和兩兩差值:
deltaX、deltaY用來統計放大、縮小手勢。
兩兩差值用來統計上、下、左、右手勢。
所以,手勢是一段時間的手勢,而不是某個時刻的。
實現代碼
具體代碼就不貼出來,可直接在我Github下載
總結
路線問題:mousewheel給予的deltaX、deltaY值跟操作效果有挺大不同,快速滑動效果特別不準確。
手勢問題:由于雙指特性的第三點,手勢實現無法精確,即便是把時間段變得很短,但因為數據量問題(無法用微積分的思路),會變得更不精確;把時間段變長,反應時長又會變長;
感謝各位的閱讀!關于“如何捕獲Mac觸摸板雙指事件”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。