2012-06-26 95 views
14

我正在研究Transformer Pad和開發繪圖板。 我使用PhoneGap(javascript)來編寫代碼而不是JAVA。Android系統上的「touchmove」事件:Transformer Prime

但touchmove事件很奇怪。

我認爲當我將手指放在墊上時,它會不斷收集我在畫布上觸摸的座標。但它不是! 這很荒謬,它只收集「1」座標:手指移動到畫布上的第一個點。

這裏是我的關於「觸摸0​​& Move事件」代碼:

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

我不知道爲什麼,每次我提出我的手指放在墊,試圖繪製直線,曲線,或任何東西 我想要的。隨着手指的移動,只會出現一個非常短的片段。所以我在這個js文件的開頭聲明瞭一個變量:「var test = 0」。我發現儘管我將手指放在墊子上而沒有離開或停止,但「測試」的值仍爲1.這意味着我將手指放在它上面。但它不會不斷觸發事件:「Touch_Move」。

我現在能做什麼?我需要一個相應的事件來觸摸板上的「mousemove」。至少,事件必須不斷被觸發。

                Thank you! 

回答

38

哦,耶穌。我終於找到答案: Please take reference for this site.

如果您在Android系統工作時,記得「touchmove」只火一次作爲你的手指圍繞墊 移動。所以,如果你想畫一條線什麼的,你必須這樣做:

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

如果你有更多的時間,你可以閱讀W3C的文檔關於引進 「movetouch」,這實在是很難理解。該文件很糟糕。

+4

所以我有一些功能,當他們向左/向右滾動(在整頁幻燈片上)時,我想轉到下一張幻燈片。使用'preventDefault()'使它工作,但然後定期滾動(上和下)不起作用(一些幻燈片比屏幕更高...幻燈片可能不是它實際的最好的描述符,但你得到理念)。 – CWSpear

+1

我還必須在'touchmove'事件中添加'preventDefault'來完成這個工作。 – ngryman

+1

是否可以保持滾動功能?我需要同時滾動和連續touchmove。 –