LibGDX - isKeyPressed()不算一个

时间:2014-03-11 01:40:57

标签: java android libgdx

我正在尝试做游戏。当你按下“A”时,我的角色应该向前跳一个方格,但每次按下“A”键时他都会跳7个方格。有人知道怎么把它限制在1?我知道它为什么会发生,但直到现在我才找到任何方法。

我的“玩家”类代码,即我的角色类:

ArrayList<Square> squareList = new ArrayList<Square>();
int count = 0;
Vector2 position = new Vector2(50,50);
if(Gdx.input.isKeyPressed(Keys.A))
{
    j = j + 1;
    position.x = squareList.get(i).getPosition().x;
    position.y = squareList.get(i).getPosition().y;
    i++;

}

3 个答案:

答案 0 :(得分:2)

我认为这样的东西会起作用:

if (Gdx.input.isKeyPressed(Input.Keys.P)) {
    // Use a helper so that a held-down button does not continuously switch between states with every tick
    if (pauseHelper) {
        if (isPaused) {
            Util.toConsole ("No longer paused");
            isPaused = false;
        }
        else {
            Util.toConsole ("Now paused");
            isPaused = true;
        }
        pauseHelper = false;
    }
}
else {
    pauseHelper = true;
}

(见http://pastebin.com/vsVWeHj6

但是,从技术上讲,您需要实施LibGDX提供的InputProcessor来处理按键操作。

答案 1 :(得分:2)

试试这个:

if (Gdx.input.isKeyJustPressed(Keys.A)) {
    System.out.println("KEY PRESSED");
}

按键只会运行一次,但如果按住它只会触发一次。测试了它。

答案 2 :(得分:1)

如果您不想实现InputProcessor,可以采用另一种方法:

//Member variable:
boolean mAKeyWasPressed = false;

//In method:
boolean aKeyIsPressed = Gdx.input.isKeyPressed(Keys.A);
if (aKeyIsPressed && !mAKeyWasPressed)
    //Just pressed. Do stuff here.
}
mAKeyWasPressed = aKeyIsPressed;