2015-05-25 44 views
1

(在iOS/Windows的手機未測試)HTML5 touchmove總是會得到在Android

我要建一個HTML5遊戲的手機,並希望使用用戶的觸摸輸入操縱桿/ CONTROLER但每touchmove腳本中斷我發現在經過長時間的碰撞之後,這似乎斷了。我只在Android設備上正確地測試過,但我嘗試了幾種不同的瀏覽器,結果是一樣的。我知道'e.preventdefault'和'width = device-width',我正在使用這兩個,但這個錯誤仍然存​​在。下面是我使用的代碼:

function initInput() 
    { 
     canvas = document.getElementById("Canvas"); 

     canvas.addEventListener("mousedown",mouseDown, false); 
     canvas.addEventListener("mouseup", mouseUp, false);   
     canvas.addEventListener("mousemove",mouseXY, false); 

     canvas.addEventListener("touchstart", touchDown, false); 
     canvas.addEventListener("touchend", touchUp, false); 
     canvas.addEventListener("touchcancel", touchUp, false); 
     canvas.addEventListener("touchleave", touchUp, false); 
     canvas.addEventListener("touchmove", touchXY, false); 

    }  

    function mouseUp(e) 
    { 
     e.preventDefault(); 
     mouseIsDown = 0; 
    } 

    function touchUp(e) 
    { 
     e.preventDefault(); 
     mouseIsDown = 0; 
    } 

    function mouseDown(e) 
    { 
     e.preventDefault(); 
     mouseIsDown = 1; 
     touchInitX = e.pageX - canvas.offsetLeft; 
     touchInitY = e.pageY - canvas.offsetTop; 
    } 

    function touchDown(e) 
    { 
     e.preventDefault(); 
     mouseIsDown = 1; 
     var touch = e.targetTouches[0]; 

     if (e.touches) 
     { 
      if (e.touches.length == 1) 
      { 
       touchInitX = touch.pageX - touch.target.offsetLeft; 
       touchInitY = touch.pageY - touch.target.offsetTop; 
      } 
     } 
    } 

    function mouseXY(e) 
    { 
      e.preventDefault(); 
      canvasX = e.pageX - canvas.offsetLeft; 
      canvasY = e.pageY - canvas.offsetTop; 
    } 

    function touchXY(e) { 
     e.preventDefault(); 
     var touch = e.targetTouches[0]; 

     if (e.touches) { 
      if (e.touches.length == 1) 
      { 
       canvasX = touch.pageX - canvas.offsetLeft; 
       canvasY = touch.pageY - canvas.offsetTop; 
      } 
     } 
    } 

這裏有幾個例子,你可以測試這種行爲發生的事情:

http://jsfiddle.net/B5wgb/8/

http://www.onlywebpro.com/demo/gamedev/mouse_detect.html

這些不同的方法/腳本我在網上找到,到目前爲止,我發現所有touchmove代碼示例似乎沒有正常工作。如果您在Android設備上模擬持續拖動,則touchmove將在某個時間點中斷並返回一個觸摸點,然後持續觸摸,直到您鬆開手指停止觸摸移動。這可能需要1秒鐘或幾分鐘,但touchmove總是會在某個時間點中斷。

任何建議/解決方案,將不勝感激。謝謝

回答

0

這是由一個共同的硬件?/軟件引起的?問題在索尼xperia Z系列,使觸摸輸入越野車。