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

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

ก่อน หลัง
clientX: 167
clientY: 196
pageX:   167
pageY:   196
radiusX: 26
radiusY: 26
screenX: 167
screenY: 277
clientX: 167.33299255371094
clientY: 195.66700744628906
pageX:   167.33299255371094
pageY:   195.66700744628906
radiusX: 25.843116760253906
radiusY: 25.843116760253906
screenX: 167.33334350585938
screenY: 276.66668701171875

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

เมื่อดูการสาธิตของ Rick Byers คุณจะเห็นว่าฟีเจอร์นี้สร้างความแตกต่างได้มากเพียงใดเมื่อวาดภาพเกลียวอย่างช้าๆ

ความแตกต่างของเหตุการณ์การสัมผัส

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

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

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

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

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

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

เมื่อเปลี่ยนไปใช้โฟลทแล้ว ท่าทางสัมผัสของเราจึงมีหน้าตาแบบนี้

ความแม่นยำของทศนิยมระหว่างการใช้ท่าทางสัมผัส

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

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