Un toucher précis pour des gestes précis

Une modification a été introduite dans l'implémentation des TouchEvents dans Chrome à partir de M37 (stable 08/2014), qui change les coordonnées indiquées en flottants 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



Vous bénéficiez ainsi d'une réponse plus fluide aux gestes des utilisateurs, car la position des doigts est plus précise.

Grâce à la démonstration de Rick Byers, vous pouvez voir l'immense différence que cela peut faire si vous dessinez lentement un tourbillon.

Différences au niveau des événements tactiles

Seuls les écrans dont la densité de pixels est supérieure à 1 ne seront affectés. Pour comprendre pourquoi, prenons un exemple.

Imaginez que vous disposez d'une grille de 3 x 3 de pixels CSS et que la densité de l'écran est de 3. Cela signifie que nous avons une grille de 9 x 9 pixels physiques et que l'utilisateur effectue des gestes de haut en bas à gauche vers le bas à droite.

Pixel CSS et grille de pixels de l'écran

À l'origine, nous arrondissons la position des points de contact au pixel CSS le plus proche. Dans ce geste, vous devez donc obtenir les étapes suivantes.

Précision des pixels CSS lors du geste

Nous manquons de trace des étapes intermédiaires que les pixels physiques pourraient afficher lorsque l'utilisateur déplace le doigt.

Maintenant que nous sommes passés aux floats, notre geste peut ressembler à ceci.

Précision du float lors du geste

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

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