2015-10-18 62 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

相关问题