2012-06-26 39 views
14

Tôi đang làm việc trên một Transformer Pad và phát triển một bản vẽ. Tôi sử dụng PhoneGap (javascript) để viết mã thay vì JAVA.Sự kiện "touchmove" trên hệ thống android: Transformer Prime

Nhưng sự kiện touchmove khá lạ.

Tôi nghĩ khi di chuyển ngón tay trên bàn phím, nó sẽ liên tục thu thập các tọa độ mà tôi chạm vào khung vẽ. NHƯNG NÓ KHÔNG! Thật lố bịch, nó chỉ thu thập tọa độ "1": điểm đầu tiên trên canvas mà ngón tay tôi di chuyển đến.

Dưới đây là mã của tôi về "Chạm & & Move sự kiện":

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

Tôi không biết lý do tại sao mỗi khi tôi di chuyển ngón tay của tôi trên pad, cố gắng để vẽ một đường, đường cong, hoặc bất cứ điều gì Tôi muốn. Khi ngón tay di chuyển, chỉ có phân đoạn VERY SHORT xuất hiện. Vì vậy, tôi khai báo một biến: "var test = 0" ở đầu tệp js này. Tôi thấy rằng mặc dù tôi di chuyển ngón tay của tôi trên pad mà không cần rời khỏi nó hoặc dừng lại, giá trị của "kiểm tra" vẫn còn 1. Nó có nghĩa là tôi di chuyển ngón tay của tôi trên đó. Nhưng nó không liên tục để kích hoạt sự kiện: "Touch_Move".

Tôi có thể làm gì bây giờ? Tôi cần một sự kiện tương ứng với "mousemove" trên bàn di chuột. Ít nhất, sự kiện này phải liên tục được kích hoạt.

                Thank you! 

Trả lời

38

Oh, Jesus. Cuối cùng tôi tìm thấy câu trả lời: Please take reference for this site.

Nếu bạn làm việc trên hệ thống Android, hãy nhớ 'touchmove' chỉ kích hoạt ONCE làm ngón tay của bạn di chuyển xung quanh bàn phím. Vì vậy, nếu bạn muốn vẽ một đường hoặc một cái gì đó, bạn phải làm điều này:

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

Và nếu bạn có nhiều thời gian hơn, bạn có thể đọc tài liệu của W3C về việc giới thiệu các 'movetouch' , nó là REALLY khó hiểu . Các tài liệu hút.

+4

Vì vậy, tôi có một số chức năng mà tôi muốn chuyển sang trang trình bày tiếp theo khi chúng cuộn sang trái/sang phải (trên trình chiếu trang đầy đủ). Sử dụng 'preventDefault()' làm cho nó hoạt động, nhưng sau đó cuộn thường xuyên (lên và xuống) không hoạt động (một số trang trình bày cao hơn màn hình ... trình chiếu có thể không phải là phần mô tả tốt nhất cho thực tế, nhưng bạn có được ý kiến). – CWSpear

+1

Tôi cũng đã thêm 'prevenDefault' vào sự kiện' touchmove' để thực hiện công việc này. – ngryman

+1

Có thể bật tính năng cuộn được không? Tôi cần cả hai touchmove di chuyển và liên tục cùng một lúc. –

Các vấn đề liên quan