鼠标位置返回不起作用?

时间:2017-02-07 13:41:59

标签: javascript css

从唯一答案编辑的代码

    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);"没有任何回报

1 个答案:

答案 0 :(得分:0)

getMousePos只绑定了eventHandler,它还没有注册任何鼠标移动。实际上,它甚至没有return语句(只有mouseMove)。

相反,您可能希望为mouseXmouseY实现并返回 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保持最新状态

我希望,这有帮助。