Control táctil preciso para gestos precisos

Se produjo un cambio en la implementación de TouchEvents de Chrome a partir de M37 (estable desde el 08/2014), lo que altera las coordenadas informadas a números de punto flotante en lugar de números enteros.

Antes Después
clienteX: 167
clienteY: 196
pageX:   167
páginaY:   196
radioX: 26
radioY: 26
screenX: 167
screenY: 277
clientX: 167.33299255371094
clientY: 195.66700744628906
pageX: 167.33299255371094
pageY: 195.66700744628906



El resultado de este cambio significa que tienes una respuesta más fluida a los gestos de los usuarios, ya que te brinda una mayor precisión de la posición de los dedos.

Con la demostración de Rick Byers, puedes ver la enorme diferencia que esto puede generar cuando dibujas un espiral lentamente.

Diferencias en los eventos táctiles.

Esto solo afectará a las pantallas que tengan una densidad de píxeles superior a 1. Para entender por qué, veamos un ejemplo.

Imagina que tienes una cuadrícula de 3 × 3 de píxeles CSS y la densidad de la pantalla es 3, lo que significa que tenemos una cuadrícula de píxeles físicos de 9 × 9 y el usuario hace un gesto de arriba a la izquierda y viceversa.

Los píxeles CSS y la cuadrícula de píxeles de pantalla

Originalmente, redondeábamos la posición de los toques al píxel de CSS más cercano, lo que significaba que, en este gesto, se obtendrían los siguientes pasos.

Precisión de píxeles de CSS durante el gesto.

Se pierde alguno de los pasos intermedios que los píxeles físicos podrían mostrar cuando el usuario mueve el dedo.

Ahora que cambiamos a los números de punto flotante, nuestro gesto puede verse así.

Precisión de flotación durante un gesto.

En la mayoría de los casos, esto no requerirá ningún cambio en el código, pero significa que las animaciones o los movimientos que realices como resultado de TouchEvents serán más fluidos, especialmente para los gestos lentos.

Además, se planea incorporar esta mejora en Safari para dispositivos móviles: https://bugs.webkit.org/show_bug.cgi?id=133180.