如何延迟一个图像在Java中显示在屏幕上?

时间:2018-06-11 18:19:57

标签: java lwjgl slick2d

到目前为止,我正在为我的12年级计算机科学开展Pacman游戏。

我想让怪物自动在游戏中移动。我在游戏中使用Slick2D和LWJGL。我在游戏中有一些代码可以控制蓝色怪物移动的位置。

if (bluePosX < 400) {
    try {
        Thread.sleep(100);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    bluePosX++;
}

所以基本上我在屏幕上看到的是蓝色怪物自动朝着正确的方向移动。我唯一的问题是,当我使用Thread.sleep(100);时,它会延迟整个屏幕。我只想延迟蓝色怪物在朝正确方向前进之前要等多久。我如何只延迟蓝色怪物图像而不是整个屏幕?

2 个答案:

答案 0 :(得分:0)

我假设您设置游戏循环更新的频率,例如每秒60次= 60fps。在这种情况下,100ms等于6次更新(每次更新间隔1000/60 ms)。因此,请在更改bluePosX++之前等待6次更新。

答案 1 :(得分:0)

我建议您使用更新方法中的delta。

请参阅:this

您可以在变量中计算增量,并在达到最大增量后执行特定操作。之后,您可以将deltaCounter重置为0.我不建议使用Thread.sleep或类似的任何东西。您可以使用Java Swing Timer,但通常使用delta来实现与时序相关的事情。它更容易并由您使用的引擎提供。