设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2627|回复: 4
打印 上一主题 下一主题

[有事请教] 如何检测鼠标右键按住?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2987
在线时间
441 小时
注册时间
2014-11-21
帖子
145
跳转到指定楼层
1
发表于 2021-5-23 10:21:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
如题,TouchInput.isPressed()可以判断左键按住,TouchInput.isTriggered()是左键按下,TouchInput.isCancelled()是右键按下,但似乎默认没有检测右键按住的方法,如果需要这么一个检测的功能该怎么写?

Lv2.观梦者

梦石
0
星屑
394
在线时间
49 小时
注册时间
2021-5-2
帖子
19
4
发表于 2021-5-23 22:45:22 | 只看该作者
qwer_run 发表于 2021-5-23 11:17
//更新了

//参考别人的,未考虑双键同时按下,或者同时按下后单个抬起,或者其他的情况

有用吗,我也是看到才想去查的,感觉有些bug
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
394
在线时间
49 小时
注册时间
2021-5-2
帖子
19
3
发表于 2021-5-23 11:17:13 | 只看该作者
本帖最后由 qwer_run 于 2021-5-24 23:17 编辑

//更新了

//参考来源http://cache.baiducontent.com/c?m=K9wsfVaDFWez4DGgRA565VU5Bxlc9DAWbG3DlIsEvbWC3HJNFeI67N2IiEAG5v8LavsBCy18l54DgpNLwe4kJCa-AvWRh0hvpO9sBlpOly67vvvf37b-IVDKFZsPaZEK6tCMpdCRxDiniTuJbOtR8M1YZ7bcbVyJzS5IAhpQ_U7&p=8b2a970086cc42ae5af5c8225c5789&newp=8457c21d9c9512a05abd9b7d0c14c6231610db2151d7db116b82c825d7331b001c3bbfb423291402d7c17b6203a44d5fe9f53572310923a3dda5c91d9fb4c57479&s=cfcd208495d565ef&user=baidu&fm=sc&query=js%CA%F3%B1%EA%B3%A4%B0%B4&qid=87acb25f007d8077&p1=2

//这个还有点问题,console.log();调试用,请替换或者删除
                /*按键顺序(多个按键夹杂时),以下左(l)表示 :鼠标左键; 右(r)表示 :鼠标右键;中(m)表示 :滚轮键 ;down :按下  up : 松开
                左(down)右(down)左(up)右(up)识别为左短 右(短,长,过长)   (按下右键时,左键计数器会被刷新成0)
                左(down)右(down)右(up)左(up)只识别右键的长短按,原因不明
                右(down)左(down)右(up)左(up)只识别右键的长短按,原因不明
                右(down)左(down)左(up)右(up)识别为左(短,长,过长)右短                (按下左键时,右键计数器会被刷新成0)
                与滚轮键的夹杂或者三键并用,暂未尝试。。。。。。
                */
        var  case_0 = function(hddd)
                                        {
                                               
                                                switch(hddd)                                                                                                        // hddd  传入按键时间长短的一个参数
                                                        {
                                                                case 0 :console.log("mouse_r_press_short");break;                        //鼠标右键短,自己加对应条件下的行动
                                                                case 1 :console.log("mouse_r_press_long");break;                        //鼠标右键长,自己加对应条件下的行动
                                                                case 2 :console.log("mouse_r_press_longover");break;                //鼠标右键过长,自己加对应条件下的行动
                                                                case 3 :console.log("mouse_m_press_short");break;                        //鼠标滚轮键短,自己加对应条件下的行动
                                                                case 4 :console.log("mouse_m_press_long");break;                        //鼠标滚轮键长,自己加对应条件下的行动
                                                                case 5 :console.log("mouse_m_press_longover");break;                //鼠标滚轮键过长,自己加对应条件下的行动
                                                                case 6 :console.log("mouse_l_press_short");break;                        //鼠标左键短,自己加对应条件下的行动
                                                                case 7 :console.log("mouse_l_press_long");break;                        //鼠标左键长,自己加对应条件下的行动
                                                                case 8 :console.log("mouse_l_press_longover");break;                //鼠标左键过长,自己加对应条件下的行动
                                                       
                                                        }
                                       
                                        };
                onmousedown=function down(v)                    //鼠标按下时触发
                {
               
                var nw=80;                        //nw * TT =800ms自动终止,单位ms,设置最长按键时间
                var lgok=40;                //lgok * TT =400ms为长按最小值
                var lgr=0;                //右键计数用的变量
                var lgl=0;                //左键计数用的变量
                var lgm=0;                //滚轮键计数用的变量
                var TT=10;                        //计数周期,多久计一次
                var cn;
                var cnl,cnr,cnm;                                //要循环的计算函数名称
                        if(2===v.button)                //右键
                        {               
                                        cnr=setInterval(function(){ lgr++; },TT);
                                               
                        }
                        if(0===v.button)                //左键
                        {               
                                        cnl=setInterval(function(){ lgl++; },TT);
                                       
                        }
                       
                        if(1===v.button)                //滚轮键
                        {               
                                        cnm=setInterval(function(){ lgm++; },TT);
                                       
                        }
                        onmouseup =function up(v)                        //鼠标释放时触发
                                {
                                       
                                        if(2==v.button){clearInterval(cnr);console.log("!r"+lgr);}//如果鼠标按键弹起,终止计数函数
                                        if(0==v.button){clearInterval(cnl);console.log("!l"+lgl);}
                                        if(1==v.button){clearInterval(cnm);console.log("!m"+lgm);}
                                        if(0==v.button) { lgl >=nw ? case_0(8):lgl >= lgok ? case_0(7) :  case_0(6);}
                                        if(1==v.button) { lgm >=nw ? case_0(5):lgm >= lgok ? case_0(4) :  case_0(3);}
                                        if(2==v.button) { lgr >=nw ? case_0(2):lgr >= lgok ? case_0(1) :  case_0(0);}
                                                                                                                                       
                                };
                                       
                };

点评

感谢!有空我研究下原理  发表于 2021-5-23 22:38
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
670
在线时间
49 小时
注册时间
2018-2-7
帖子
16
2
发表于 2021-5-23 10:54:30 | 只看该作者
本帖最后由 Vanyogin 于 2021-5-23 10:56 编辑

input括号里面可以输入keyName的。KeyName,文本型,待检测按键的映射名。
右键的KeyName是叫什么就不知道了。

额,抱歉,搞错了,input和TouchInput是不同的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-14 02:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表