Java2D游戏:如何正确处理键盘?

时间:2012-05-05 20:16:19

标签: java keyboard java-2d

我找到了关于如何使用Java2D创建游戏的very good tutorial。在本教程中,有一个名为“Moving sprites”的部分,它显示了如何在屏幕上移动一个小的航天器图像。我正在玩这种工艺,并意识到它有时会在屏幕上“阻塞”。经过一些测试并思考这个问题后,我发现阻塞问题正在发生,因为当你使用键盘的箭头时,你有时会同时按下左右,这会阻止运动。

所以我的问题是:我如何处理这种键盘事件 - 当你按下左键按钮然后按下右键按钮 - 这样字符移动不被阻挡?

我认为这种情况很常见,因为当你在演奏时,你从左向右切换,但是你会在同一时间左右按下。

1 个答案:

答案 0 :(得分:3)

您可以通过多种方式执行此操作。一种方法是在你的程序中使用布尔值。

您可以在按某个键时将布尔值设置为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',你要么向右移动,要么向左移动。我没有测试这段代码,所以不太确定这是否可行:)

让我知道你的想法和好运!