如何计算libgdx中按钮按下和按钮释放之间的时间

时间:2018-01-31 16:38:44

标签: java android libgdx desktop-application

public void shotPower() {
    float startTime = System.currentTimeMillis();
        if (Gdx.input.getCurrentEventTime(Input.Keys.S)){
            float endTime = System.currentTimeMillis();

            float time = endTime - startTime;
            System.out.println(time);
    }
}

此代码无效。

我按下按钮" S"按下它一段时间后,我不知道如何计算按下和释放之间的时间。也许这种方法已经存在。我知道它以某种方式与System.currentTimeMillis连接。请帮忙。

对不起我的英语,我才开始学习编程。

2 个答案:

答案 0 :(得分:2)

您目前正在计算if语句之间的时间,该语句将非常接近于零

请改用InputProcessor。然后,您可以访问可用于比较时间的方法keyDown()keyUp()。由于两种方法都不能共享局部变量,而且我有多个键,我使用HashMap存储数据。

// integer is keycode, long is the time it was pressed
private HashMap<Integer, Long> keyTime = new HashMap<Integer, Long>();

@Override
public boolean keyDown(int keyCode) {

    keyTime.put(keyCode, System.currentTimeMillis());

    return true;
}

@Override
public boolean keyUp(int keyCode) {

    if(keyTime.containsKey(keyCode) {
        float time = endTime - keyTime.get(keyCode);
        System.out.println(time);
        keyTime.remove(keyCode);
    }

    return true;
}

答案 1 :(得分:0)

public long isPressed(){

    long time = 0;

    long time1 = 0;

    if (Gdx.input.isKeyPressed(Input.Keys.SPACE)) {

        time = System.currentTimeMillis() / 1000;

        System.out.println(time);
    }
return time;
}

这应该有用,只需要几秒钟的时间。