Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中,如何检测用户是否持有密钥?_Javascript - Fatal编程技术网

在javascript中,如何检测用户是否持有密钥?

在javascript中,如何检测用户是否持有密钥?,javascript,Javascript,我正在尝试做一个游戏,如果你按住shift键,玩家会加速。我尝试使用keyEvent,但它无法检测到按键是否被按住。当我松开shift键时,播放器仍处于加速模式,并且不会将速度更改回正常状态。有什么可能的方法来实现这一点吗 您应该收听两个事件:keydown和keydup。在每种事件类型中,您都应该检查键(“shift”的键代码为16),在keydown上,您应该启动一个操作,在keydup上停止它(如果event.keycode==16)。下面是一个文本颜色的简单示例,当按下“shift”时,

我正在尝试做一个游戏,如果你按住shift键,玩家会加速。我尝试使用keyEvent,但它无法检测到按键是否被按住。当我松开shift键时,播放器仍处于加速模式,并且不会将速度更改回正常状态。有什么可能的方法来实现这一点吗

您应该收听两个事件:
keydown
keydup
。在每种事件类型中,您都应该检查键(“shift”的键代码为16),在
keydown
上,您应该启动一个操作,在
keydup
上停止它(如果
event.keycode==16
)。下面是一个文本颜色的简单示例,当按下“shift”时,它变为红色(不要忘记单击代码段打开的窗口,没有它它将无法工作,因为如果不关注此窗口,所有事件都将“超出”代码段的范围):

var onkeydown=(函数(e){
如果(如keyCode===16){
document.getElementById(“目标”).style.color=“红色”;
}
});
var onkeyup=(函数(e){
如果(如keyCode===16){
document.getElementById(“目标”).style.color=“黑色”;
}
});

按住“shift”键时呈红色
您应该收听两个事件:
按键向下
按键向上
。在每种事件类型中,您都应该检查键(“shift”的键代码为16),在
keydown
上,您应该启动一个操作,在
keydup
上停止它(如果
event.keycode==16
)。下面是一个文本颜色的简单示例,当按下“shift”时,它变为红色(不要忘记单击代码段打开的窗口,没有它它将无法工作,因为如果不关注此窗口,所有事件都将“超出”代码段的范围):

var onkeydown=(函数(e){
如果(如keyCode===16){
document.getElementById(“目标”).style.color=“红色”;
}
});
var onkeyup=(函数(e){
如果(如keyCode===16){
document.getElementById(“目标”).style.color=“黑色”;
}
});

按住“shift”键时为
红色
当按下某个键时,将触发
向下键
事件,然后当释放该键时,将触发
向上键
事件。不能帮你回答-因为你需要展示你已经尝试过的东西。您可能正在使用
keypress
事件-这对执行您想要的操作没有多大帮助。建议:使用
keydown
/
keydup
处理程序,如果在按下某个键时仍遇到问题,请发布一个真实的问题(即代码),将触发一个
keydown
事件,然后在释放该事件时触发一个
keydup
事件。不能帮你回答-因为你需要展示你已经尝试过的东西。您可能正在使用
keypress
事件-这对执行您想要的操作没有多大帮助。建议:使用
keydown
/
keydup
处理程序,如果您仍然遇到问题,请发布一个真正的问题(即代码),值得注意的是,如果按下或释放键时元素不在焦点位置(即未获取事件),则会出现问题,例如,单击代码段,按住shift键(文本变为红色),单击代码段外部,释放轮班。文本保持红色。把注意力放在代码片段上,文本仍然是红色的。@RobG我不是一个网络浏览器游戏开发者,我给出了一个简单的解决方案来证明这是可能的。这难道不是正常的行为吗?当您使用“tab”在网页上的输入之间切换,然后单击PC上的另一个窗口时,“tab”将不再适用于该页面,而该选项卡仍处于不聚焦状态。是吗?当然,只是指出事件有其背景,所以OP需要注意这一点值得注意的是,如果按下或释放键时元素未处于焦点(即未获取事件),则会出现问题,例如,在代码段中单击,按住shift键(文本变为红色),在代码段外单击,松开shift键。文本保持红色。把注意力放在代码片段上,文本仍然是红色的。@RobG我不是一个网络浏览器游戏开发者,我给出了一个简单的解决方案来证明这是可能的。这难道不是正常的行为吗?当您使用“tab”在网页上的输入之间切换,然后单击PC上的另一个窗口时,“tab”将不再适用于该页面,而该选项卡仍处于不聚焦状态。是吗?当然,只是指出事件有其背景,所以OP需要注意这一点