所以我基本上是用Java创建一个平台游戏。这是一个简单的问题。我可以同时响应两个不同的KeyEvent吗?例如,我按向右箭头键,而播放器向右移动。现在,我希望播放器跳起来,但继续向右移动。为此,我需要同时响应两个不同的KeyEvent。我该如何实现?我还没有尝试过任何代码,因为我不知道从哪里开始。预先感谢您的答复。

最佳答案

您可以使用单独的“ KeyDown”和“ KeyUp”事件,并为播放器设置状态值。

您需要为您的播放机提供一个State-Machine。

public class KeyboardListener extends JFrame implements KeyListener {

public KeyboardListener() {
    addKeyListener(this);
}

@Override
public void keyPressed(KeyEvent e) {

    if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
        System.out.println("Right key pressed");
    }
    if (e.getKeyCode() == KeyEvent.VK_LEFT) {
        System.out.println("Left key pressed");
    }

}

@Override
public void keyReleased(KeyEvent e) {
    if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
        System.out.println("Right key Released");
    }
    if (e.getKeyCode() == KeyEvent.VK_LEFT) {
        System.out.println("Left key Released");
    }
}

public static void main(String[] args) {
    new KeyboardListener();
}
}


使用KeyListener接口中的keyPressed和keyReleased-EventHandlers并将您当前的玩家状态(例如,走路,跳跃,walk_left,walk_right等)保存为布尔值。

在主循环中,您可以检查播放器处于什么状态并更改其坐标。喜欢:

if(player.left) { player.x += speed } //etc.

关于java - 如何同时响应两个不同的KeyEvent?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58836104/

10-10 22:35