การแตะอย่างแม่นยำเพื่อท่าทางสัมผัสที่แม่นยำ

การเปลี่ยนแปลงเกิดขึ้นในการใช้ TouchEvents ของ Chrome ตั้งแต่ M37 (เสถียรใน 08/2014) ซึ่งเป็นการเปลี่ยนแปลงพิกัดที่แสดงในรายงานเป็นแบบลอยแทนจำนวนเต็ม

ก่อน หลัง
clientX: 167
clientY: 196
pageX:   167
pageY:   196
Radius X: 26
RadiyY: 26
screenX: 167
screenY: 277
clientX: 167.33299255371094
clientY: 195.66700744628906
pageX: 167.33299255371094
pageY: 195.66700744628906



ผลจากการเปลี่ยนแปลงนี้หมายความว่าคุณจะตอบสนองต่อท่าทางสัมผัสของผู้ใช้ได้ราบรื่นยิ่งขึ้น เนื่องจากจะทำให้ตำแหน่งของนิ้วมีความแม่นยำสูงขึ้น

เมื่อใช้การสาธิตของ Rick Byers คุณจะเห็น ความแตกต่างที่ยิ่งใหญ่เมื่อวาดการหมุนช้าๆ

ความแตกต่างของ "เหตุการณ์การแตะ"

โดยจะมีผลกับหน้าจอที่มีความหนาแน่นของพิกเซลมากกว่า 1 เท่านั้น เพื่อทำความเข้าใจสาเหตุ เรามาดูตัวอย่างกัน

สมมติว่าคุณมีตารางกริดแบบ 3x3 พิกเซล CSS และความหนาแน่นของหน้าจอเท่ากับ 3 ซึ่งหมายความว่าเรามีตารางกริดขนาด 9x9 พิกเซลจริงและท่าทางสัมผัสของผู้ใช้จากด้านซ้ายบนไปด้านล่างขวา

ตารางกริดพิกเซลและพิกเซลหน้าจอของ CSS

เริ่มแรก เราจะปัดเศษตำแหน่งการแตะให้เป็นพิกเซล CSS ที่ใกล้ที่สุด ซึ่งหมายความว่าท่าทางสัมผัสนี้จะทำให้คุณทำตามขั้นตอนต่อไปนี้

ความแม่นยำของพิกเซล CSS ระหว่างท่าทางสัมผัส

เราพลาดการวาดขั้นตอนตรงกลางที่พิกเซลจริงสามารถแสดงเมื่อผู้ใช้ขยับนิ้ว

ตอนนี้เมื่อเราสลับไปเป็นการลอยตัวแล้ว ท่าทางสัมผัสของเราจะมีลักษณะดังนี้

ทำทศนิยมให้ลอยขณะทำท่าทางสัมผัส

ในกรณีส่วนใหญ่ คุณไม่ต้องเปลี่ยนแปลงโค้ดใดๆ เลย แต่ภาพเคลื่อนไหวหรือการเคลื่อนไหวใดๆ ที่คุณทำเนื่องจาก TouchEvents จะราบรื่นขึ้นโดยเฉพาะสำหรับท่าทางสัมผัสที่ช้า

นอกจากนี้ยังมีแผนที่จะนำการปรับปรุงนี้มาใช้กับ Safari บนอุปกรณ์เคลื่อนที่ด้วยเช่นกัน: https://bugs.webkit.org/show_bug.cgi?id=133180