2012-06-26 8 views
14

Ich arbeite an einem Transformer Pad und Entwicklung einer Zeichenplatte. Ich benutze PhoneGap (Javascript), um den Code anstelle von JAVA zu schreiben.Das "touchmove" -Ereignis auf Android-System: Transformer Prime

Aber das Touchmove-Ereignis ist ziemlich komisch.

Ich denke, wie ich meinen Finger auf dem Pad bewegen, wird es kontinuierlich die Koordinaten sammeln, die ich auf der Leinwand berühren. ABER ES NICHT! Es ist lächerlich, es sammeln nur "1" Koordinate: der erste Punkt auf der Leinwand bewegt sich mein Finger zu.

Hier sind meine Code über das „Touch & & Move-Ereignis“:

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++;     
} 

Ich weiß nicht, warum jedes Mal, wenn ich auf dem Pad meine Finger bewegen, eine Linie, die Kurve zu zeichnen versuchen, oder irgendetwas ich will. Wenn sich der Finger bewegt, wird nur ein SEHR KURZES Segment angezeigt. Also deklariere ich eine Variable: "var test = 0" am Anfang dieser js-Datei. Ich habe festgestellt, dass, obwohl ich meinen Finger auf dem Pad bewege, ohne es zu verlassen oder anzuhalten, der Wert von "Test" 1 bleibt. Es bedeutet, dass ich meinen Finger darauf bewege. Aber es ist nicht kontinuierlich das Ereignis auszulösen: "Touch_Move".

Was kann ich jetzt tun? Ich brauche ein entsprechendes Ereignis, um auf dem Touchpad "Mauszeiger" zu bewegen. Zumindest muss das Ereignis kontinuierlich ausgelöst werden.

                Thank you! 

Antwort

38

Oh, Jesus. Ich finde endlich die Antworten: Please take reference for this site.

Wenn Sie auf einem Android-System arbeiten, erinnere mich an die ‚Berührungsbewegungs‘ nur Feuer ONCE wie Sie mit dem Finger bewegt sich um die Pad. Also, wenn Sie wollen, eine Linie oder etwas zeichnen, Sie haben, dies zu tun:

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

Und wenn Sie mehr Zeit haben, können Sie die W3C-Dokument über die Einführung des ‚movetouch‘ lesen, es ist wirklich schwer zu verstehen . Das Dokument saugt.

+4

So habe ich einige Funktionen, die ich auf die nächste Folie gehen möchte, wenn sie nach links/rechts scrollen (auf einer ganzen Seite Diashow). Mit 'preventDefault() 'funktioniert es, aber dann normales Scrollen (nach oben und nach unten) funktioniert nicht (einige Folien sind größer als der Bildschirm ... Slideshow ist vielleicht nicht die beste Beschreibung für das, was es tatsächlich ist, aber Sie erhalten die Idee). – CWSpear

+1

Ich musste auch 'prevenDefault' zum' touchmove' Event hinzufügen, um das zu erreichen. – ngryman

+1

Kann das Scrollen aktiviert bleiben? Ich brauche beide scrollen und kontinuierliche Touchmove zur gleichen Zeit. –