原生js解决dblclick双击和mousedown,mouseup鼠标按下抬起冲突问题

news/2024/7/11 1:07:19 标签: javascript, vue.js, html, es6, node.js

最近在开发项目中遇到这么一条需求,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++;
             }
         }
    } 

同理判断和抬起的矛盾时,也是这个思路判断。但是比较不合理的是,使用了计时器导致鼠标动作在效果上有延迟,体验不是太好,如果大神们有其它思路,欢迎留言啊。


http://www.niftyadmin.cn/n/1143576.html

相关文章

D3.js实现双曲线示波器

先上效果图 项目需要做一个显示不同波形的示波器,所以研究了一下D3,代码放一下,便于自己温习,有需要的可以自行学习。(欢迎指正);项目环境为vue项目中在node环境下,使用d3实现 thi…

Vue项目中使用quill富文本编辑器

最近新起了一个项目,弃用之前的UE富文本编辑器,通过调研决定使用quill,一个很简单的小插件哈,以下是我的使用经验 1. 安装 npm install vue-quill-edito 2. 引用注册 //引用 import quill/dist/quill.core.css;import quill/dist/quill.snow.css;import quill/dist/quill.b…

js实现模糊搜索下的文字高亮显示

因为项目需求写了一段模糊搜索文字高亮显示的功能, 效果如下: 话不多说,直接甩代码: //this.searchValue 为搜索项 匹配搜索项与this.fileList[index].fullName是否匹配 然后 //返回匹配项数组searchMatchArr.涉及到了模糊搜索,故而做了大小…

电灯泡的题

TimeLimit:1000MS MemoryLimit:128MB 64-bit integer IO format:%lld Problem Description V_Dragon有n栈电灯泡,编号为1-n,每个灯泡都有一个开关。那么问题来了 所有灯泡初始时为不亮的 V_Dragon分别进行三次操作 每次操作他都选一个质数x&#x…

为什么死循环了

上述代码陷入死循环的原因: 内存空间氛围栈区,堆区,静态区; 其中栈区是存储局部变量; 原因: 1.栈区的默认使用: 先使用高地址处的空间; 再使用低地址处的空间 2.数组随着下边…

神奇的指针

具体内存布局如上 //两个指针相减代表两个指针之间的元素个数 //指针相减(地址1-地址2)/sizeof(类型) 这个你把他当成定律 ,你要记牢。 //说白了还是指针类型加减整数跳跃的是一个类型 如 int *p;p1 意思就是 p跳跃一个整型 char *p; p1 意思就是 p跳…

指针的爱情

代码含义 char *a "asdsad"; 存入的是 字符串首元素地址 a是一个数组,数组中存放的类型的是char* 即指针数组 二级指针含义 pa是一个指针 *pa 指针指向 字符指针 char* *pa a 类比 int *p p是一个指针 *p 指针指向…

套娃的指针

c是一个数组, 存放内容是指针, 叫指针数组 cp是一个数组 存放内容是 指针的指针,叫二级指针数组 别废话,画个图就知道了 如上