2012-06-26 10 views
14

Estoy trabajando en una plataforma de transformación y desarrollando una placa de dibujo. Uso PhoneGap (javascript) para escribir el código en lugar de JAVA.El evento "touchmove" en el sistema android: Transformer Prime

Pero el evento touchmove es bastante extraño.

Creo que al mover el dedo sobre la libreta, se recogen continuamente las coordenadas que I tocan en el lienzo. ¡PERO NO LO HACE! Es ridículo, solo recoge la coordenada "1": el primer punto en el lienzo mueve mi dedo.

Éstos son mi código de la "Touch & & Mover evento":

function touchStart(event){ 
    if (event.targetTouches.length == 1) { 
    var touch = event.targetTouches[0];  

     if (event.type == "touchstart") { 
      line_start_x= touch.pageX- canvas_org_x; 
      line_start_y= touch.pageY- canvas_org_y; 
      context.beginPath();       
      context.moveTo(line_start_x, line_start_y); 

     }//if   
    }//if 1 
}//function. 

function Touch_Move(event){ 
    line_end_x= event.touches[0].pageX- canvas_org_x; 
       line_end_y= event.touches[0].pageY- canvas_org_y; 
       context.lineTo(line_end_x, line_end_y); 
       context.stroke(); 
       test++;     
} 

No sé por qué cada vez que se mueve el dedo en el teclado, tratando de dibujar una línea, curva, o cualquier cosa Quiero. A medida que el dedo se mueve, solo aparece un segmento MUY CORTO. Entonces declaro una variable: "var test = 0" al comienzo de este archivo js. Descubrí que, aunque muevo el dedo sobre la almohadilla sin dejarla ni detenerme, el valor de "prueba" permanece 1. Significa que muevo mi dedo sobre ella. Pero no se activa continuamente para activar el evento: "Touch_Move".

Qué puedo hacer ahora? Necesito un evento correspondiente para "mousemove" en el teclado táctil. Al menos, el evento tiene que activarse continuamente.

                Thank you! 

Respuesta

38

Oh, Jesus. por último encuentro las respuestas: Please take reference for this site.

Si se trabaja en un sistema Android, recuerda el 'touchmove' sólo disparar una vez que el dedo se mueve alrededor de la almohadilla. Así que si quieres dibujar una línea o algo así, usted tiene que hacer esto:

function onStart (touchEvent) { 
if(navigator.userAgent.match(/Android/i)) { // if you already work on Android system, you can  skip this step 
touchEvent.preventDefault();  //THIS IS THE KEY. You can read the difficult doc released by W3C to learn more. 
} 

Y si usted tiene más tiempo, se puede leer el documento del W3C sobre la introducción de la 'movetouch', es realmente difícil de entender . El doctor apesta.

+4

Tengo algunas funciones que quiero ir a la siguiente diapositiva cuando se desplazan hacia la izquierda/derecha (en una presentación de diapositivas de página completa). Usar 'preventDefault()' lo hace funcionar, pero luego el desplazamiento normal (arriba y abajo) NO funciona (algunas diapositivas son más altas que la pantalla ... la presentación de diapositivas puede no ser el mejor descriptor de lo que realmente es, pero obtienes la idea). – CWSpear

+1

También tuve que agregar 'prevenDefault' al evento' touchmove' para que funcione. – ngryman

+1

¿Es posible mantener habilitado el desplazamiento? Necesito tanto desplazamiento como movimiento continuo al mismo tiempo. –

Cuestiones relacionadas