2015-10-18 38 views
-1

我的目標是從我的鼠標的x和y位置實時更新輸入。 y位置效果很好,但是當我去添加x位置時,除了'NaN'我什麼也得不到。我如何獲得Javascript Canvas以返回x和y鼠標位置?

爲什麼這不適用於X位置?這不是如何通過一個函數傳遞一個對象?是多個對象的問題?

這裏是我的代碼:

canvas.addEventListener('mousemove', 
    function(evt){ 
     var mousePos = calculateMousePosY(evt); 
     paddle1Y = mousePos.y; 
     //HERE IS WHERE I WANT X POSITION AS WELL 
     paddle1X = mousePos.x; //Why doesn't this work? 
    }); 
function calculateMousePos(evt){ 
    var rect = canvas.getBoundingClientRect(); 
    var root = document.documentElement; 
    var mouseX = evt.clientX - rect.left - root.scrollleft; 
    var mouseY = evt.clientY - rect.top - root.scrollTop; 
    return{ 
     x:mouseX, 
     y:mouseY   
    } 

回答

1

變化var mouseX = ... - root.scrollleft;var mouseX = ... - root.scrollLeft;大寫的 '左' 的 'L'。

此外,您的功能被稱爲calculateMousePos而不是calculateMousePosY。刪除「Y」。

+0

謝謝,當我轉移到SO時,'Y'是錯誤的。首都L是罪魁禍首。 – user3158443

0

有兩個發生在你的代碼中進行,

  • 你的函數調用了拼寫var mousePos = calculateMousePosY(evt);的失配和function calculateMousePos(evt){...}有一個額外的「Y」。
  • 它是scrollLeft,大寫字母「L」。

請在下面找到的代碼:希望它有助於]

HTML:

<canvas id="myCanvas" width="578" height="200"></canvas> 

的Javascript:

var canvas = document.getElementById('myCanvas'); 
 
var context = canvas.getContext('2d'); 
 
canvas.addEventListener('mousemove',function(evt){ 
 
     var mousePos = calculateMousePos(evt); 
 
     var values = 'Mouse position:' + mousePos.x + ',' + mousePos.y; 
 
     display(canvas, values); 
 
    }); 
 
function calculateMousePos(evt){ 
 
    var rect = canvas.getBoundingClientRect(); 
 
    var root = document.documentElement; 
 
    var mouseX = evt.clientX - rect.left - root.scrollLeft; 
 
    var mouseY = evt.clientY - rect.top - root.scrollTop; 
 
    return{ 
 
     x:mouseX, 
 
     y:mouseY   
 
    } 
 
} 
 
    
 
    
 
function display(canvas, values) { 
 
     var context = canvas.getContext('2d'); 
 
     context.clearRect(0, 0, canvas.width, canvas.height); 
 
     context.font = '18pt Calibri'; 
 
     context.fillStyle = 'black'; 
 
     context.fillText(values, 10, 25); 
 
}
<canvas id="myCanvas" width="578" height="200"></canvas>

+0

這很尷尬。我對編碼並不陌生,我發誓我真的嘗試過。 2小時....感謝抓住,一次強調一步的偉大教訓,我應該已經創建了另一個塊來抓住'l' - >'L' – user3158443

+0

@ user3158443:樂於幫助。每個人都在你的地方:-)所以沒問題,請接受最適合你的答案。謝謝。 – Pbk1303

相關問題