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

מאט גאונט

בעקבות השינוי הטמענו את אירועי TouchEvents של Chrome, נכון לגרסה M37 (היציבה ב-08/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 195.66700744628906



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

באמצעות ההדגמה של ריק ביירס תוכלו לראות איך כל שינוי משמעותי יכול לעשות כשמציירים באיטיות מערבולת.

הבדלים באירועי מגע.

ההגדרה הזו תשפיע רק על מסכים שדחיסות הפיקסלים שלהם גדולה מ-1. כדי להבין את הסיבה, הבה נבחן דוגמה.

נניח שיש לכם רשת של פיקסלים של CSS בגודל 3x3 ודחיסות המסך היא 3. כלומר, יש רשת של פיקסלים פיזיים בגודל 9x9 ואת תנועות המשתמש מהפינה השמאלית העליונה לפינה הימנית התחתונה.

פיקסלים של CSS ורשת פיקסלים למסך.

במקור, עיגולנו את מיקום המגע לפיקסל הקרוב ביותר של ה-CSS, ומשמעות הדבר שבתנועה הזו תתקבל השלבים הבאים.

דיוק הפיקסל של CSS במהלך התנועה.

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

עכשיו, אחרי שעברנו למצב צף, התנועה שלנו יכולה להיראות כך.

רמת הדיוק של הצף במהלך התנועה.

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

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