最近在开发项目中遇到这么一条需求,canvas画布上实现图形的拖拽以及双击结束多边形画图的功能。但是遇到了鼠标事件冲突的问题。参考网上demo最后确定的实现思路是,使用setTimeout方法。判断一下延迟250ms后是否鼠标按下了一次。若按下了一次,则是mousedown事件,大于1次则是dblclick事件。
mousedown (event)
{
if (event.button === 0)//判断左右鼠标中键 0为左键 2为右键
{
if(leftDownCount === 0)//当此全局变量为0时,说明鼠标还没有按下过
{
leftDownCount++;//定义一个全局变量 每按下一次此变量加1以此判断按下了几次
leftDownInterval = setTimeout( ()=>
{
this._compareLeftDownFun();
}, 500);
}
else
{
leftDownCount++;//当鼠标多次按下时,此全局变量依次加一
}
}
else if (event.button === 2)//判断鼠标右键
{
if(trightDownCount === 0)//与左键的判断同理
{
rightDownCount++;
rightDownInterval = setTimeout( ()=>
{
_compareRightDownFun();
}, 500);
}
else
{
rightDownCount++;
}
}
}
同理判断和抬起的矛盾时,也是这个思路判断。但是比较不合理的是,使用了计时器导致鼠标动作在效果上有延迟,体验不是太好,如果大神们有其它思路,欢迎留言啊。