我一直在这个圈子里走来走去。现在我知道有些事我不明白,因为我已经回应了一段时间,它从来没有真正正常工作。命名方法和鼠标事件处理程序
这些条件在更新动画的循环中。我只想在选项等于某个值时收听鼠标移动事件,而在其他情况下,我将删除该事件侦听器。
处理鼠标移动事件的方法是updateMouse,根据变量opt的状态正确调用。
if (opt == 7) {
canvas2.addEventListener("onmousemove", updateMouse(canvas2), false);
} else {
canvas2.removeEventListener("onmousemove", updateMouse, false);
}
问题在运行脚本时,我得到:“无法读取的未定义的属性clientX”。
function updateMouse(c) {
if (!e) var e = window.event;
var rect = c.getBoundingClientRect();
m_pos = {
x: event.clientX - rect.left,
y: event.clientY - rect.top
};
console.log("salida: " + m_pos.x + " " + m_pos.y);
}
这不是用命名方法处理鼠标事件的正确方法吗?
您正在调用'updateMouse',而不是分配处理程序。你的'updateMouse'定义了一个'c'参数,但是试图使用'e'就好像它已经被赋予了'event'对象。您应该让参数预测'event'对象,并使用'this'引用'canvas2'。并且摆脱'if(!e)var e = window.event;' –