tactiles - No se pueden obtener las coordenadas de los dispositivos táctiles en Javascript en dispositivos Android
touchstart (2)
Estoy probando el lienzo HTML5 y utilizando Javascript para dibujar para dispositivos táctiles. Si bien lo tengo funcionando en dispositivos iOS, no puedo hacer que funcione en Android. Lo he reducido a event.pageX que no devuelve las coordenadas, sino que devuelve 0 o no definido (según el navegador).
Lo he probado en mi teléfono con Cyanogen 7.1 en el navegador Opera Mobile y Dolphin, y también en un Galaxy Tab 10.1 (Android 3.1) con el navegador estándar.
He modificado el código para mostrar una alerta en un evento de inicio táctil que muestra las coordenadas event.pageX, event.layerX y event.clientX (soy consciente de que clientX solo debería funcionar en iOS)
canvas.addEventListener(''touchstart'', function(e) {
if (readyToDraw){
alert("PageX: "+e.pageX+","+e.pageY+"/n LayerX: "+e.layerX+","+e.layerY+"/n + clientX: "+e.clientX+","+e.clientY);
// prevent the browsers default action!
e.preventDefault();
paint = true;
// Get coordinates
var c = getCoords(e);
addClick(c.x, c.y, false);
}
});
Tengo el dibujo completo funcionando en iOS, pero ni siquiera puedo hacer que Android registre las coordenadas, ¿alguna idea?
EDICIÓN FINAL: Resolví el problema, vea la respuesta aceptada.
EDICIÓN FINAL: Ok, lo tengo funcionando, si alguien encuentra esto y tiene un problema similar, necesita acceder a la matriz táctil dentro del evento, y si solo usa una sola pulsación (en lugar de multitáctil) saque el primer elemento de la matriz , como se muestra a continuación, o puede que tenga que compensarlo si eso no es exacto:
var touch = event.touches[0];
var x = touch.pageX;
var y = touch.pageY;
// or taking offset into consideration
var x_2 = touch.pageX - canvas.offsetLeft;
var y_2 = touch.pageY - canvas.offsetTop;
No funcionó para mí (en el contexto de iScroll 5). En changedTouches[0]
lugar, se usa changedTouches[0]
, tal como se propuso en el evento del clic del ratón. Pagex es NaN en el navegador Chrome móvil (v30.0.1599.92) .