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连接。请帮忙。
对不起我的英语,我才开始学习编程。
答案 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;
}
这应该有用,只需要几秒钟的时间。