Un toucher précis pour des gestes précis

Une modification a été apportée à l'implémentation des TouchEvents de Chrome à partir de M37 (version stable en août 2014), qui remplace les coordonnées signalées par des nombres à virgule flottante au lieu d'entiers.

Avant Après
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

Grâce à cette modification, vous obtenez une réponse plus fluide aux gestes des utilisateurs, car la position des doigts est plus précise.

Dans la démo de Rick Byers, vous pouvez voir à quel point cela peut faire toute la différence lorsque vous dessinez lentement un tourbillon.

Différences entre les événements tactiles

Cela n'affectera que les écrans dont la densité de pixels est supérieure à 1. Pour comprendre pourquoi, examinons un exemple.

Imaginons que vous disposiez d'une grille de 3 x 3 pixels CSS et que la densité d'écran soit de 3. Cela signifie que nous avons une grille de 9 x 9 pixels physiques et que les gestes de l'utilisateur vont du coin supérieur gauche au coin inférieur droit.

Pixel CSS et grille de pixels de l'écran.

À l'origine, nous arrondions la position des points de contact au pixel CSS le plus proche, ce qui signifiait que, dans ce geste, vous obteniez les étapes suivantes.

Précision au pixel CSS lors d'un geste.

Nous ne dessinons aucune des étapes intermédiaires que les pixels physiques pourraient afficher lorsque l'utilisateur bouge son doigt.

Maintenant que nous sommes passés aux flottants, notre geste peut ressembler à ceci :

Précision à virgule flottante pendant le geste.

Dans la plupart des cas, cela ne nécessite aucune modification de votre code, mais cela signifie que toutes les animations ou mouvements que vous effectuez à la suite de TouchEvents seront plus fluides, en particulier pour les gestes lents.

Cette amélioration est également prévue pour Safari sur mobile: https://bugs.webkit.org/show_bug.cgi?id=133180.