מגע מדויק לתנועות מדויקות

בוצע שינוי בהטמעה של TouchEvents ב-Chrome החל מגרסה M37 (גרסה יציבה משנת 2014), שמשנה את הקואורדינטות שמדווחות ל-float במקום למספרים שלמים.

לפני אחרי
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 במהלך תנועה.

אנחנו לא מצליחים לצייר את השלבים הביניים שהפיקסלים הפיזיים יכולים להציג כשהמשתמש מזיז את האצבע.

עכשיו, אחרי שעברנו ל-floats, התנועה יכולה להיראות כך.

דיוק של נקודה צפה (floating-point) במהלך תנועה.

ברוב המקרים, לא תצטרכו לבצע שינויים בקוד, אבל המשמעות היא שכל האנימציות או התנועות שתבצעו כתוצאה מאירועי Touch יהיו חלקות יותר, במיוחד בתנועות איטיות.

אנחנו גם מתכננים להוסיף את השיפור הזה ל-Safari לנייד: https://bugs.webkit.org/show_bug.cgi?id=133180.