【发布时间】:2014-02-25 21:26:14
【问题描述】:
我正在制作一个绘图板,我希望鼠标位置在拖动鼠标时在数组中更新。这是我的代码:
function penDown (x, y) {
isPenDown = true;
localPen.x = x;
localPen.y = y;
}
var X = [],
Y = [],
i = -1;
function penMove (x, y) {
if (isPenDown) {
++i;
X[i] = localPen.x;
Y[i] = localPen.y;
console.log("i is " + i + ", x is " + X[i] + ", y is " + Y[i]);
}
};
控制台日志显示,当您移动鼠标时,i 会不断更新,但鼠标的 X 和 Y 坐标不会改变 - 当您第一次按下鼠标时,它们只是停留在初始鼠标位置。
这就是我如何调用 penDown:
function pointerDownListener (e) {
// Retrieve a reference to the Event object for this mousedown event.
var event = e || window.event;
// Determine where the user clicked the mouse.
var mouseX = event.clientX - canvas.offsetLeft;
var mouseY = event.clientY - canvas.offsetTop;
// Move the drawing pen to the position that was clicked
penDown(mouseX, mouseY);
}
function pointerMoveListener (e) {
var event = e || window.event; // IE uses window.event, not e
var mouseX = event.clientX - canvas.offsetLeft;
var mouseY = event.clientY - canvas.offsetTop;
// Draw a line if the pen is down
penMove(mouseX, mouseY);
}
【问题讨论】:
-
你能说明你是怎么称呼
penDown的吗? -
我认为您是从
mousemove事件中调用pointerMoveListener? -
是的,document.onmousemove = pointerMoveListener;
-
我会在您的浏览器中使用开发者工具调试
pointerMoveListener,检查event.clientX和Y 的值以及canvas.offsetLeft
标签: javascript location