2

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

所以我的问题是:我该如何处理这种键盘事件——当你按下左键时,一直按下它,然后按下右键——这样角色的移动就不会被阻止?

我认为这种情况很常见,因为当你演奏时,你会从左向右切换,但有那么一瞬间你同时按下了左键和右键。

4

1 回答 1

3

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

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

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”,您要么向右移动,要么向左移动。我还没有测试这段代码,所以不太确定这是否可行:)

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

于 2012-05-05T20:27:28.923 回答