ES5 Canvas mousedown 拖动问题
ES5 Canvas mousedown dragging issue
我正在尝试使用 mousedown 来检测您何时按住某个项目。
对于上下文,我在一个数组中有 2 个精灵,我可以检测到它们边界框中的点击,并且它正确地传递到 mousedownHandler。
spArray[1] 是我要拖动的 canvas 精灵。 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 successful"
我正在考虑使用 setInterval 函数将精灵捕捉到鼠标位置,但后来我 运行 遇到了清除 mouseup 间隔的问题。我对事件相当陌生,我很难理解这一点。
非常感谢任何帮助。
如果我理解正确的话,您希望 MouseDownHandler
在鼠标移动时被触发,我不知道有任何语言会那样做...
- 每次按下鼠标按钮时,MouseDown 应该是一次性事件
- 就像松开鼠标按钮时发生一次 MouseUp 一样。
- 应该有一个更频繁触发的 MouseMove。
有了这些信息,您就可以开始拖着工作了。
拖动是在 MouseDown 和 MouseUp 之间发生的每一个动作
我正在尝试使用 mousedown 来检测您何时按住某个项目。 对于上下文,我在一个数组中有 2 个精灵,我可以检测到它们边界框中的点击,并且它正确地传递到 mousedownHandler。
spArray[1] 是我要拖动的 canvas 精灵。 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 successful"
我正在考虑使用 setInterval 函数将精灵捕捉到鼠标位置,但后来我 运行 遇到了清除 mouseup 间隔的问题。我对事件相当陌生,我很难理解这一点。
非常感谢任何帮助。
如果我理解正确的话,您希望 MouseDownHandler
在鼠标移动时被触发,我不知道有任何语言会那样做...
- 每次按下鼠标按钮时,MouseDown 应该是一次性事件
- 就像松开鼠标按钮时发生一次 MouseUp 一样。
- 应该有一个更频繁触发的 MouseMove。
有了这些信息,您就可以开始拖着工作了。
拖动是在 MouseDown 和 MouseUp 之间发生的每一个动作