如标题所示,在我的Java游戏中,无法检测是否同时按下空格键和其他键。
例如,空格键是射击键,而箭头键则使玩家移动。如果我按下向上箭头键,向左箭头键和空格键,那么它应该向左上方发射子弹。
但是,在使用倍数System.out.println();
进行调试之后,我发现如果按下两个键,则如果按下空格键,则不会检测到空格键。
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == 32){
pressingSpacebar = true;
System.out.println("Spacebar pressed true");
}
// Up arrow key
if(e.getKeyCode() == 38){
up = true;
System.out.println("Up = true");
}
// Down arrow key
if(e.getKeyCode() == 40){
down = true;
System.out.println("Down = true");
}
// Right arrow key
if(e.getKeyCode() == 39){
right = true;
System.out.println("Right = true");
}
// Left arrow key
if(e.getKeyCode() == 37){
left = true;
System.out.println("Left = true");
}
}
然后在keyReleased中:
public void keyReleased(KeyEvent e) {
if(e.getKeyCode() == 38){
up = false;
repaint();
}
if(e.getKeyCode() == 40){
down = false;
repaint();
}
if(e.getKeyCode() == 39){
right = false;
repaint();
}
if(e.getKeyCode() == 37){
left = false;
repaint();
}
if(e.getKeyCode() == 32){
pressingSpacebar = false;
}
}
这是我检查是否按空格键和多个键的方式:
if(pressingSpacebar){
if(right == true && down == true && up == false && left == false){
// Shoot bullet
}
}
为什么未检测到空格键?如果我不检查是否按下空格键,则子弹射击很好,但是当我检查空格键时,它不会检测到它。
注意:我已经阅读了与此问题类似的其他帖子,但答案不是很有帮助。当涉及到这些东西时,我是一个新手,所以请尝试给出一个简单的答案或进行一些解释。提前致谢!
KeyEvent仅针对最后按下的键生成,因此您需要在按下键时保持跟踪(例如,通过将其添加到HashMap),然后在keyReleased上需要从HashMap中删除键。
更好的方法是使用Key Bindings
(而不是KeyListener)将绑定KeyStroke
到Action
。
查看KeyboardAnimation
在使用键盘运动中找到的示例。它解释了有关键绑定的更多信息,并提供了处理上/下/右/左键的完整工作示例。通常,可以同时按住任意两个键以进行对角线运动。
该逻辑也可以使用3个键,但是正如已经提到的,键盘本身可能不支持一次按下那么多键。
问题内容: 如标题所示,在我的Java游戏中,无法检测是否同时按下空格键和其他键。 例如,空格键是射击键,而箭头键则使玩家移动。如果我按下向上箭头键,向左箭头键和空格键,那么它应该向左上方发射子弹。 但是,在使用倍数进行调试之后,我发现如果按下两个键,则如果按下空格键,则不会检测到空格键。 然后在keyReleased中: 这是我检查是否按空格键和多个键的方式: 为什么未检测到空格键?如果我不检查
注意:我也读过其他类似这个问题的帖子,但答案并不是很有帮助。我是一个新手,当谈到这些东西,所以试着给一个简单的答案或解释一下。提前感谢!
问题内容: 我是Java的初学者,一直在研究如何检测用户是否按下了某个键(例如箭头键)。显然,有很多方法可以做到这一点,我发现此方法应该对我有用: 问题是我不知道什么是KeyEvent。 当我调用该方法并给我举个例子时,谁能告诉我在括号中加什么? PS:不要把我发送到其他站点,我可能已经看过了,他们只是让我更加困惑… 问题答案: public class KeyEvent extends Inpu
问题内容: 在Java中,我有一个程序需要连续检查用户是否按下了键。所以在伪代码中,像 提前致谢! 问题答案: 在Java中,你不检查是否有键被按下,而不是你听到秒。实现目标的正确方法是注册一个,并实现它以维持所需密钥的状态: 然后,您可以随时使用: 当然,您可以使用相同的方法来实现键映射及其包裹在状态中的状态。
我有一个Java函数,我想在其中测试控制键是否被按住。我该怎么做? 编辑:我正在使用摆动作为gui。
问题内容: 我正在尝试开发JavaScript游戏引擎,但遇到了这个问题: 当我按下时,角色跳跃。 当我按下时,角色向右移动。 问题是当我向右按然后按空格键时,角色会跳跃然后停止移动。 我使用该功能来按下键。如何检查是否同时按下多个键? 问题答案: **注意:现已弃用 如果您了解概念,则可以轻松进行多次击键检测 我这样做的方式是这样的: 这段代码非常简单:由于计算机一次只传递一个按键,因此创建了一