从唯一答案编辑的代码
var mouseX, mouseY;
var what = "none";
var mouse = this.mouse;
canvas.addEventListener("mousemove", function(e) {
if(e.offsetX) {
mouseX = e.offsetX;
mouseY = e.offsetY;
}
else if(e.layerX) {
mouseX = e.layerX;
mouseY = e.layerY;
}
if(mouse == "x" || mouse == "mouseX" || mouse == "mousex") {
what = "x";
} else if(mouse == "y" || mouse == "mouseY" || mouse == "mousey"){
what = "y";
}
if(what == "x") {
console.log(mouseX);
return mouseX;
} else if(what == "y") {
return mouseY;
}
});
现在它仍在返回"未定义"
这是我的代码,由于某种原因它没有返回。 (它全部在函数内部" getMousePos"),而我的console.log无法正常工作
console.log(getMousePos(canvas, "x"));
它只返回undefined。有人知道吗?
编辑:代码" console.log(mouseX);"没有任何回报
答案 0 :(得分:0)
getMousePos
只绑定了eventHandler,它还没有注册任何鼠标移动。实际上,它甚至没有return
语句(只有mouseMove)。
相反,您可能希望为mouseX
和mouseY
实现并返回 Getter 方法,之后,在发生一些移动后,请在控制台中检查它们。或者,您可以将它们设为全局变量,因此您可以使用
console.log(mouseX);
我猜你想做什么:
如果要读取当前鼠标位置,则必须先将eventHandler绑定。首先创建全局变量mouseX和mouseY:
var mouseX, mouseY;
其次,绑定事件处理程序(可能在window.onload
内)
canvas.addEventListener("mousemove", function(e) {
if(e.offsetX) {
mouseX = e.offsetX;
mouseY = e.offsetY;
}
else if(e.layerX) {
mouseX = e.layerX;
mouseY = e.layerY;
}
}
);
这将跟踪鼠标的位置并使mouseX和mouseY保持最新状态
我希望,这有帮助。