libGDX 暂停运行几秒钟

4

我有一个应用程序,在其中我希望暂停一下。这很重要,以便在两个自动交互之间更好地展示图形元素/更改。

我尝试使用上面的代码进行2分钟的暂停,但它会在方法开始时暂停,而不是在方法内部两行代码之间暂停。

try {
    Thread.sleep(2000);
} catch(InterruptedException ex) {
    Thread.currentThread().interrupt();
}

你尝试过使用 wait() 和 notify() 吗? - Kiloreux
1个回答

2

Libgdx希望渲染循环定期运行(大约与屏幕刷新率相同),并在每次重新绘制屏幕时重新绘制。因此,尽管您的应用程序可能看起来“暂停”,但实际上它不应该被暂停。它应该忙于更新屏幕、更新动画、响应后退键等。

因此,您需要更明确地决定在此窗口期间阻止了什么。只是对输入做出反应?添加新元素?那么您应该在窗口期间跳过这些元素。

long endPauseTime = 0;

当您决定暂停时:

endPauseTime = System.currentTimeMillis() + (2 * 1000); // 2 seconds in the future

然后在您的渲染回调函数中:
if (endPauseTime < System.currentTimeMillis()) {
   // non-paused mode, so check inputs or whatever
} else {
   // paused mode, so skip some things ..
}

1
不需要使用System.currentTimeMillis(),如果他在应用程序中使用了Screen,则可以在其render(float)方法中接收到delta时间,其中1.0f表示1秒。否则,他应该只使用Gdx.graphics.getDeltaTime()来更新计时器。 - EpicPandaForce
是的,我已经实现了屏幕。 - user4725754

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接