gpt4 book ai didi

java - 如何同时响应两个不同的 KeyEvents?

转载 作者:行者123 更新时间:2023-11-29 09:26:30 24 4
gpt4 key购买 nike

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

最佳答案

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

您的播放器需要一个状态机。

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 接口(interface)中的 keyPressed 和 keyReleased-EventHandlers 并将当前播放器状态(例如行走、跳跃、walk_left、walk_right 等)保存为 boolean 值。

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

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

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com