【问题标题】:delay between two inputs java两个输入之间的延迟java
【发布时间】:2016-05-29 13:36:39
【问题描述】:

我正在使用 Java 和 Libgdx 创建一个小游戏作为我的研究项目。 游戏非常简单:2D,侧视图,用箭头控制,一切都被看作是一个以单位划分的网格(玩家高 1 个单位,环境潮汐是 1 个单位高,...)。 问题是角色的移动速度很快(而且必须如此),所以很难只向左或向右移动 1 个单位。 我想知道是否可以在键盘的两个输入之间创建延迟,因为移动部分采用“更新”方法,所以每次我按下一个键时,它都会创建 5 或 10 个输入。 我尝试使用 java 计时器(如 0.2 或 0.3 秒)来处理它,每次我按下一个键并且程序无法在计时器完成之前听键盘时都会发生这种情况。但我觉得它真的很脏,所以我请求你帮助引导我以更体面的方式做到这一点。谢谢。

【问题讨论】:

标签: java input libgdx delay


【解决方案1】:

您可以通过将上次使用时间与当前时间进行比较来轻松实现冷却时间。

double coolDownInMillis = 1200;
double lastTime = 0;

public void move() {
    double now = System.currentTimeMillis();
    if(lastTime - now > coolDownInMillis  && pressingTheRightKey()){
        //do what you want
        lastTime = System.currentTimeMillis();
    }
}

或者类似的东西。

【讨论】:

  • 我认为这样就可以了。谢谢。
  • @Herawo 如果是这样,请将我的答案标记为有效的解决方案。