Java2D游戏:如何正确使用键盘?

Java2D游戏:如何正确使用键盘?,java,keyboard,java-2d,Java,Keyboard,Java 2d,我找到了一个关于如何使用Java2D创建游戏的方法。在本教程中,有一个叫做“移动精灵”的部分,展示了如何在屏幕上移动一个小的航天器图像。我在玩这个手艺,意识到它有时会在屏幕上“阻塞”。经过一些测试和思考这个问题,我发现阻塞问题发生了,因为当你使用键盘的箭头时,有时你同时按下左键和右键,这会阻塞移动 所以我的问题是:我如何处理这种键盘事件-当你按下左键时,保持按下它,然后按下右键-这样字符的移动就不会被阻止 我认为这种情况很常见,因为当你在玩游戏时,你会从左向右切换,但有一瞬间你会同时按下左键和右

我找到了一个关于如何使用Java2D创建游戏的方法。在本教程中,有一个叫做“移动精灵”的部分,展示了如何在屏幕上移动一个小的航天器图像。我在玩这个手艺,意识到它有时会在屏幕上“阻塞”。经过一些测试和思考这个问题,我发现阻塞问题发生了,因为当你使用键盘的箭头时,有时你同时按下左键和右键,这会阻塞移动

所以我的问题是:我如何处理这种键盘事件-当你按下左键时,保持按下它,然后按下右键-这样字符的移动就不会被阻止


我认为这种情况很常见,因为当你在玩游戏时,你会从左向右切换,但有一瞬间你会同时按下左键和右键。

你可以通过多种方式来实现这一点。一种方法是在程序中使用布尔值

您可以在按下某个键时将布尔值设置为true,释放布尔值时将其设置为false。即:

int x,xSpeed;

boolean movingLeft  = false;
boolean movingRight = false;

public void keyPressed(KeyEvent e) {
    int key = e.getKeyCode();
    if(key == KeyEvent.VK_LEFT){
        movingLeft = true;
    }
    if(key == KeyEvent.VK_RIGHT){
        movingRight = true;
    } 
}

public void keyReleased(KeyEvent e) {
    int key = e.getKeyCode();
    if(key == KeyEvent.VK_LEFT){
        movingLeft = false;
    }
    if(key == KeyEvent.VK_RIGHT){
        movingRight = false;
    } 
}

public void moving(){
    if(movingLeft){
        x -= xSpeed;
    }
    if(movingRight){
        x += xSpeed;
    }
}
好的,让我们看看这个代码。因为我们使用的是“else if”,你要么向右移动,要么向左移动。我还没有测试这段代码,所以不太确定这是否有效:)

让我知道你的想法,祝你好运