Un toucher précis pour des gestes précis

Matt Gaunt

Une modification est arrivée dans l'implémentation des TouchEvents de Chrome à partir de M37 (stable en 08/2014), qui modifie les coordonnées signalées en valeurs flottantes au lieu d'entiers.

Avant Après
clientX: 167
clientY: 196
pageX:   167
pageY:   196
rayonX: 26
rayonY: 26
écranX: 167
écranY: 277
clientX: 167.33299255371094
clientY: 195.66700744628906
pageX : 167.33299255371094
pageY : 195.66700744628906



Résultat : vous obtenez une réponse plus fluide aux gestes de l'utilisateur, car la position des doigts est plus précise.

À l'aide de la démonstration de Rick Byers, vous pouvez observer l'énorme différence que cela peut avoir pour dessiner lentement un tourbillon.

Différences au niveau des événements tactiles

Cela ne s'appliquera qu'aux écrans dont la densité en pixels est supérieure à 1. Pour comprendre pourquoi, prenons un exemple.

Imaginez que vous ayez une grille de pixels CSS 3x3 et que la densité de l'écran soit de 3, ce qui signifie que nous avons une grille de pixels physiques de 9 x 9, et que les gestes de l'utilisateur s'affichent du coin supérieur gauche vers l'angle inférieur droit.

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

Au départ, nous arrondissons la position des touches au pixel CSS le plus proche. Vous obtenez donc les étapes suivantes pour ce geste.

Précision des pixels CSS lors du geste

Il nous manque l'une des étapes intermédiaires que les pixels physiques pourraient afficher lorsque l'utilisateur déplace son doigt.

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

Précision du flottement pendant le geste

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

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