当前位置: 首页 > 知识库问答 >
问题:

Java keypressed--如果其他键也按下,则无法检测空格键是否被按下

索锐藻
2023-03-14
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");
    }
}
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
        }
}   

注意:我也读过其他类似这个问题的帖子,但答案并不是很有帮助。我是一个新手,当谈到这些东西,所以试着给一个简单的答案或解释一下。提前感谢!

共有1个答案

夏英发
2023-03-14

只为按下的最后一个键生成KeyEvent,因此您需要在按下键时跟踪它(例如,通过将它添加到HashMap中),然后在释放的键上,您需要从HashMap中删除该键。

更好的方法是使用键绑定(不是KeyListener),将击键绑定到操作

请查看使用键盘在运动中找到的keyboardanimation示例。它解释了更多关于键绑定的内容,并提供了处理up/down/right/left键的完整工作示例。一般情况下,任何两个键都可以同时按住,以提供对角线运动。

 类似资料:
  • 问题内容: 如标题所示,在我的Java游戏中,无法检测是否同时按下空格键和其他键。 例如,空格键是射击键,而箭头键则使玩家移动。如果我按下向上箭头键,向左箭头键和空格键,那么它应该向左上方发射子弹。 但是,在使用倍数进行调试之后,我发现如果按下两个键,则如果按下空格键,则不会检测到空格键。 然后在keyReleased中: 这是我检查是否按空格键和多个键的方式: 为什么未检测到空格键?如果我不检查

  • 问题内容: 如标题所示,在我的Java游戏中,无法检测是否同时按下空格键和其他键。 例如,空格键是射击键,而箭头键则使玩家移动。如果我按下向上箭头键,向左箭头键和空格键,那么它应该向左上方发射子弹。 但是,在使用倍数进行调试之后,我发现如果按下两个键,则如果按下空格键,则不会检测到空格键。 然后在keyReleased中: 这是我检查是否按空格键和多个键的方式: 为什么未检测到空格键?如果我不检查

  • 问题内容: 我是Java的初学者,一直在研究如何检测用户是否按下了某个键(例如箭头键)。显然,有很多方法可以做到这一点,我发现此方法应该对我有用: 问题是我不知道什么是KeyEvent。 当我调用该方法并给我举个例子时,谁能告诉我在括号中加什么? PS:不要把我发送到其他站点,我可能已经看过了,他们只是让我更加困惑… 问题答案: public class KeyEvent extends Inpu

  • 好的,在这被标记为可能的重复之前,我已经尝试了以下代码:

  • 问题内容: 在Java中,我有一个程序需要连续检查用户是否按下了键。所以在伪代码中,像 提前致谢! 问题答案: 在Java中,你不检查是否有键被按下,而不是你听到秒。实现目标的正确方法是注册一个,并实现它以维持所需密钥的状态: 然后,您可以随时使用: 当然,您可以使用相同的方法来实现键映射及其包裹在状态中的状态。

  • 问题内容: 我有一个显示值的文本字段。我想要的是,当用户在该文本字段中输入新值并按Enter时,将触发ajax函数以执行分页操作。我有一个像这样的文本字段: 当用户编写任何新值并按Enter时,我希望触发以下ajax函数: 我尝试使用keypress事件进行检测,但这不能解决问题。谁能指导我? 问题答案: 在jsfiddle上。