我使用html canvas创建了一个商业工具。
它包含许多可以拖放的元素。我自己编写了这个功能,主要是说(伪代码):
if(mouseIsDown && mouseInBoundsOfIcon){
icon.grabbed = true;
}
if(icon.grabbed){
icon.x = mouseX;
icon.y = mouseY;
}
现在,我希望其中一些图标能够实现onClick事件,使它们既可点击又可以拖动& amp;可投放'
问题是,只要我点击鼠标按钮(显然)就会触发mousedown
事件。我想我可以使用短计时器,当mousedown
触发mouseInBoundsOfIcon==true
时,我可以启动它,当它达到0.5秒时例如icon.grabbed = true
,否则如果按钮是发布它算作点击?
我不确定该怎么做。有什么建议吗?
答案 0 :(得分:1)
至少有两种区分点击和拖动的常用方法。
这两种方法都涉及在mousedown期间进行测量并将其与在mouseup或mousemove中进行的另一次测量进行比较。
测量鼠标移动的距离。例如,如果它在mouseup之前移动超过5个像素,则表示拖动。
测量mousedown和mouseup之间的时间。例如,如果鼠标在mousedown的200ms内发生,那么它就是一次点击。
有用的提示:将mousedown默认设为drag-start
而不是click
。开始拖动mousedown。如果您稍后确定用户想要点击一下,那么将图标放回到其起始位置,以便在打算点击时他们不会略微轻推图标。