Javascript在画布上模拟鼠标移动事件

时间:2019-02-08 08:05:31

标签: javascript

嘿,我想知道是否有人可以帮助我进行模拟鼠标移动事件,而我一直试图模拟鼠标从窗口内部宽度和高度到画布上对象x,y位置的移动。我可以得到对象的位置,但是当我尝试模拟鼠标从窗口中心移动到对象时,它距离对象的位置很远,为什么会发生这种情况呢?

function moveMouse(x, y) {
  var centerX = window.innerWidth / 2;
  var centerY = window.innerHeight / 2;
  document.dispatchEvent(new MouseEvent("mousemove", {
    clientX: centerX + x,
    clientY: centerY + y
  }));
}

function getObj() { 
  var obj = Game.currentGame.world.localPlayer.entity; 
  return obj
}

var obj = getObj();
var objPosition = {
  x: obj.fromTick.position.x,
  y: obj.fromTick.position.y
}

console.log(objPosition) // works 

moveMouse(objPosition.x, objPosition.y)

对不起,美巴德英语

1 个答案:

答案 0 :(得分:0)

如果objPosition.x, objPosition.y是对象在画布上相对于画布左上角的坐标,则您的mouseMove()函数应将x, y添加到顶部对象的坐标,画布的左上角,而不是窗口中心的坐标。

您可以使用canvas.getBoundingClientRect()获取画布的坐标。

或者,如果objPosition.x, objPosition.y是对象相对于窗口左上角的绝对坐标,则直接将mouseMove()直接指向它们。