Libgdx认为键盘始终被按下

时间:2015-06-20 19:23:20

标签: java libgdx

我尝试使用Gdx.input.isKeyPressed();处理键盘输入。起初我处理了asdw输入,一切都很顺利。但是当我在下面几行尝试处理按键输入时,它没有用。

当我调试它时,我可以看到它始终将ifs视为真(换句话说,他的行为就像所有的箭头一直被按下),但是这并不是&# 34; ASDW"检查。

当我尝试将密钥更改为常规字母时,问题仍然存在。

代码:

public void update(float deltaTime)

    handleDebugInp(deltaTime);
    updateTestSprites(deltaTime);
    cameraH.update(deltaTime);
}

private void handleDebugInp(float dt) {//for enabled long pressed buttons
    if(Gdx.app.getType() != ApplicationType.Desktop)//proceed with debugging only on pc
        return;

    /*keys movement*/
    float spriteSpeed = 5 * dt;//moves 5 meters per second

    if(Gdx.input.isKeyPressed(Keys.A))//if A is pressed
        moveCurrSprite(-spriteSpeed, 0);//move left
    if(Gdx.input.isKeyPressed(Keys.D))//if D is pressed
        moveCurrSprite(spriteSpeed, 0);//right
    if(Gdx.input.isKeyPressed(Keys.W))//if W is pressed
        moveCurrSprite(0, spriteSpeed);//up
    if(Gdx.input.isKeyPressed(Keys.S))//if S is pressed
        moveCurrSprite(0, -spriteSpeed);//down

    /*Camera movment*/
    //speed
    float cameraSpeed = 5 * dt;
    float accelerationFactor = 5;

    //sprint
    if(Gdx.input.isKeyPressed(Keys.SHIFT_LEFT));
        cameraSpeed *= accelerationFactor;

    //movement
    if(Gdx.input.isKeyPressed(Keys.LEFT));
        moveCamera(-cameraSpeed, 0);
    if(Gdx.input.isKeyPressed(Keys.RIGHT));
        moveCamera(cameraSpeed, 0);
    if(Gdx.input.isKeyPressed(Keys.UP));
        moveCamera(0, -cameraSpeed);
    if(Gdx.input.isKeyPressed(Keys.DOWN));
        moveCamera(0, cameraSpeed);

}
private void moveCamera(float x, float y) {
    x += cameraH.getPosition().x;
    y += cameraH.getPosition().y;

    cameraH.setPosition(x, y);
}

如果有人可能知道问题是什么,如果他能告诉我,我会很高兴。

感谢。

1 个答案:

答案 0 :(得分:2)

我会给你一个提示。在这两行之一上有一个迷路;

if(Gdx.input.isKeyPressed(Keys.LEFT));
    moveCamera(-cameraSpeed, 0);

(你将同样的问题粘贴到其他行上)。