无法通过javascript获取鼠标坐标

时间:2015-11-27 08:28:54

标签: javascript html5

最近我一直试图掌握javascript。在过去的几个月里,我一直在尝试使用不同的代码来查看通过javascript可以实现的一切。最近我一直试图找到各种方法通过javascript用画布捕获鼠标坐标。这是我的尝试:http://jsfiddle.net/f8n2one4/

如您所见,有一个MouseHandler,它应该通过ClientX和ClientY变量捕获鼠标坐标。但是,当我尝试显示这些变量时,什么都没有出现。那是为什么?

document.getElementById("test").innerHTML = "x: " + x + " y: " + y;

它不应该显示x和y值吗?

4 个答案:

答案 0 :(得分:0)

在您的示例中,您要初始化鼠标处理程序(使用MouseHandler.init(element)),但必须使用x方法访问ygetPos()值:

document.getElementById("test").innerHTML = 
    "x: " + MouseHandler.getPos().x + 
    " y: " + MouseHandler.getPos().y;

您可以看到小提琴here

的工作更新

答案 1 :(得分:0)

x和y变量超出了draw()方法的范围。

尝试以下方法:

function draw() {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    player();
    MouseHandler.init(document);
    var clientPosition = MouseHandler.getPos();
    document.getElementById("test").innerHTML = "x: " + clientPosition.x + " y: " + clientPosition.y;   
}

看到它在这里工作。

我建议不要在每个间隔初始化整个MouseHandler,只是在每个间隔上获取位置。

此外,如果您使用.requestanimationframe()而不是setInterval制作动画,那么您将获得更好的效果。

答案 2 :(得分:0)

xy不存在。你需要使用:

document.getElementById("test").innerHTML = "x: " + MouseHandler.getPos().x + " y: " + MouseHandler.getPos().y;

小提琴:http://jsfiddle.net/f8n2one4/3/

答案 3 :(得分:0)

实际上非常简单,你的x,y超出了范围。

您可以通过MouseHandler变量访问它们:

MouseHandler.getPos().x
MouseHandler.getPos().y

或者尝试使用OOP Javascript并使用“new”运算符

实例化MouseHandler
var MouseHandler = function() {
    this.x = 0;
    this.y = 0;
}

var myMouseHandler = new MouseHandler();

console.log(myMouseHandler.x + myMouseHandler.y);