【问题标题】:how to calculate time between button press and button release in libgdx如何计算libgdx中按钮按下和按钮释放之间的时间
【发布时间】:2018-01-31 16:38:44
【问题描述】:
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 连接。请帮忙。

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

【问题讨论】:

  • 我相信System.currentTimeMillis()会返回long,或者unsigned long...你可以查看文档...
  • 另外,一个按钮有一些事件——按下按钮和释放按钮(查看文档以获取准确的名称)。您可能需要同时收听才能获得开始时间和结束时间...

标签: java android libgdx desktop-application


【解决方案1】:

您目前正在计算 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;
}

【讨论】:

    【解决方案2】:

    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;
    }
    

    应该可以,只需要几秒钟的时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-08
      相关资源
      最近更新 更多