【发布时间】:2014-02-08 18:20:57
【问题描述】:
我正在制作一个基于三消的游戏,每次用户在棋盘上移动一个棋子时,游戏都会执行以下循环:
do {
checkIfThereAre3BlocksTogether();
removeThoseBlocks();
updateTheBoardPieces();
showTheBoard();
} while (thereWhereBlockRemoved);
这主要是因为当你移除一些碎片时,有可能掉落的碎片会组合在一起......
我面临的问题是我无法在此循环的每次迭代之间渲染电路板。我只得到这个循环的最终结果。
我尝试的是在每次迭代之前创建一个 Thread.sleep(2 * 1000),以便给渲染系统时间来绘制我的板,但它可以工作。
另一种解决方法是调用
Gdx.graphics.setContinuousRendering(false);
然后调用:
Gdx.graphics.requestRendering();
在 showTheBoard() 函数中...我在渲染函数中放置了一些 system.out.println 以了解它是否被调用,并且我意识到渲染仅在 do/while 循环退出时被调用。 (尽管有这种情况,render 被正确调用了)
以防万一,在我的 Screen 实现中,我的渲染函数中有这段代码:
@Override
public void render(float delta) {
System.out.println("Rendering");
// Background rendering
Gdx.gl.glClearColor(0.8f, 0.8f, 0.8f, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
// World rendering
renderer.render();
}
我认为问题可能与线程处理有关。我不明白 libgdx 在不同的线程中进行渲染,但这种情况就像我只有一个线程必须等待计算结束才能渲染......
如果有人能就可能发生的事情提供一些提示,我将不胜感激!
【问题讨论】:
-
不建议让线程休眠....尝试其他方法...
标签: java android libgdx desktop