ES5 Canvas鼠标向下拖动问题

时间:2019-03-25 12:48:53

标签: canvas drag-and-drop drag ecmascript-5 mousedown

我正在尝试使用mousedown来检测您何时按住某个项目。 对于上下文,我在一个数组中有2个sprite,可以在其边界框中检测到单击,并且该单击已正确传递到mousedownHandler中。

spArray [1]是我要拖动的画布精灵。 clickedBoundingBox正常工作。

function canvasMouseDownHandler(ev,ctx,spArray){

   if (spArray[1].clickedBoundingBox(ev)){
       console.log("Mousedown successful");

       var mx = ev.offsetX; 
       var my = ev.offsetY;

       spArray[1].x = Math.round(mx-spArray[1].width/2);
       spArray[1].y = Math.round(my-spArray[1].height/2);

}

当前发生的事情是它会立即捕捉到鼠标位置,并且没有保持拖动。通过控制台日志,我希望看到重复记录的“ mousedown成功”

我当时正在考虑使用setInterval函数将子画面捕捉到鼠标位置,但是随后我遇到了在mouseup上清除间隔的问题。我对事件还很陌生,我正努力理解这一点。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的期望,MouseDownHandler会在鼠标移动时被触发,那么我不知道有哪种语言会起到这种作用……

  • MouseDown应该是每次按下鼠标键一次的事件
  • 就像MouseUp一次释放鼠标按钮一样。
  • 应该有更多触发的MouseMove。

有了这些信息,您就可以开始工作。
拖动是MouseDown和MouseUp之间发生的每一步