【发布时间】:2014-05-16 00:55:54
【问题描述】:
我正在尝试使用 libGdx 并使用 MVC 模式制作游戏。我有一个我打算一直运行的游戏模型,而不是应用程序中的渲染方法。正因为如此,我在从 libgdx 扩展 Game 的课堂上做了这个: 首先,我将连续渲染设置为 false,并调用渲染方法,我将游戏屏幕用作模型的侦听器。
public class MyGame extends Game {
GameModel model;
GameScreen gs;
@Override
public void create() {
Gdx.graphics.setContinuousRendering(false);
Gdx.graphics.requestRendering();
model = new GameModel();
gs = new GameScreen(this, model);
model.addPCL(gs);
setScreen(gs);
model.runGame();
} ...
在我的模型中,我只是在尝试一个简单的循环,最后我将 propertyChangeEvent 触发到我的 gameScreen。一切正常,我有调试打印显示我的游戏屏幕渲染方法正在被调用并且 propertychange 工作正常。问题出现在何时应该在我的渲染方法中进行绘制,而不是绘制所有内容都会崩溃,直到我的模型中的循环结束。然后我的渲染方法被调用,因为窗口上的输入发生了变化(如果我移动鼠标或单击等),并且绘图现在显示为它应该显示的内容。
在我的 GameScreen 类中,我尝试过使用 Gdx.graphics.requestRendering() 似乎没有做任何事情,这里我的 debbuggin 打印甚至没有出现。
我还尝试使用 MyGame 类来触发它的渲染方法,这至少显示了我的调试打印。
@Override
public void propertyChange(PropertyChangeEvent evt) {
System.out.println("Event recieved");
myGame.render();
//Gdx.graphics.requestRendering();
}
@Override
public void render(float delta) {
System.out.println("mapscreen render beginning: " + delta);
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
// Stuff that should be drawn happens here
}
有谁知道什么会导致我的渲染方法被调用,但为什么它实际上并没有按照它在方法中所说的去做?还有为什么Gdx.graphics.requestRendering() 甚至不触发我的调试打印?
【问题讨论】:
标签: java android model-view-controller libgdx render