【问题标题】:How do I make this function update the current mouse position?如何使此功能更新当前鼠标位置?
【发布时间】: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


【解决方案1】:

可能是这样,因为你的函数 penDown 只被调用一次,所以分配给 localPen 的 x 和 y 的值不会改变。

【讨论】:

  • 我刚刚添加了一些代码,这可能解释了你在说什么。
猜你喜欢
  • 1970-01-01
  • 2011-01-08
  • 1970-01-01
  • 2016-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-02
  • 1970-01-01
相关资源
最近更新 更多