如何在 libgdx 中计算按下按钮和释放按钮之间的时间
how to calculate time between button press and button release in libgdx
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 相关联。请帮忙
对不起我的英语,我才刚刚开始学习编程。
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;
}
应该可以,只需要几秒钟的时间。
您目前正在计算 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;
}
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 相关联。请帮忙
对不起我的英语,我才刚刚开始学习编程。
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;
}
应该可以,只需要几秒钟的时间。
您目前正在计算 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;
}