2012-06-26 7 views
14

Sto lavorando su un Transformer Pad e sviluppo di una piastra di disegno. Io uso PhoneGap (javascript) per scrivere il codice anziché JAVA.L'evento "touchmove" su sistema Android: Transformer Prime

Ma l'evento touchmove è piuttosto strano.

Penso che mentre muovo il dito sul pad, raccoglierò continuamente le coordinate che I tocco sulla tela. MA NON LO FA! È ridicolo, raccoglie solo coordinate "1": il primo punto sulla tela su cui si muove il dito.

Ecco il mio codice per la "Touch & & Sposta 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++;     
} 

Non so il motivo per cui ogni volta che si muove il dito sul pad, cercando di tracciare una linea, una curva o nulla Voglio. Mentre il dito si sposta, appare solo un segmento MOLTO BREVE. Quindi dichiaro una variabile: "var test = 0" all'inizio di questo file js. Ho scoperto che anche se muovo il dito sul pad senza lasciarlo o fermandolo, il valore di "test" rimane 1. Significa che muovo il dito su di esso. Ma non lo fa continuamente per attivare l'evento: "Touch_Move".

Cosa posso fare ora? Ho bisogno di un evento corrispondente per "mousemove" sul touch pad. Almeno, l'evento deve essere continuamente attivato.

                Thank you! 

risposta

38

Oh, Gesù. Alla fine ho trovato le risposte: Please take reference for this site.

Se si lavora su un sistema Android, ricorda il 'touchmove' sparare solo una volta come il dito si muove intorno al pad. Quindi, se volete disegnare una linea o qualcosa, devi fare questo:

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. 
} 

E se avete più tempo, si può leggere il documento del W3C di introdurre il 'movetouch' , è davvero difficile da capire . Il dottore fa schifo.

+4

Quindi ho alcune funzionalità che voglio andare alla diapositiva successiva quando scorrono a sinistra/destra (su una presentazione a pagina intera). L'uso di 'preventDefault()' lo fa funzionare, ma lo scorrimento regolare (su e giù) NON funziona (alcune diapositive sono più alte dello schermo ... la presentazione potrebbe non essere il miglior descrittore di ciò che effettivamente è, ma ottieni il idea). – CWSpear

+1

Ho dovuto anche aggiungere 'prevenDefault' all'evento' touchmove' per farlo funzionare. – ngryman

+1

È possibile continuare a far scorrere lo scorrimento? Ho bisogno sia dello scrolling che del touchmode continuo allo stesso tempo. –