渲染方法不是绘制任何JAVA LibGDX

时间:2014-04-03 22:53:04

标签: java android model-view-controller libgdx render

我试图用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。一切正常,我有调试打印,显示我的gamecreen渲染方法被调用,propertychange工作正常。问题出现在绘图应该在我的渲染方法中,而不是绘制一切只是崩溃,直到我的模型中的循环结束。然后我的渲染方法被窗口上的输入改变(如果我移动鼠标或点击等)这一事实调用,并且图形现在显示为应该。

在我的GameScreen课程中,我尝试使用Gdx.graphics.requestRendering()似乎没有做任何事情,这里我的debbuggin打印甚至没有出现。 我也尝试使用MyGame类来触发它的render方法,至少显示我的调试打印。

@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      
}

有谁知道是什么原因导致我的render方法被调用,但是为什么它实际上并没有按照它在方法中应该做的那样做呢?另外为什么我不会Gdx.graphics.requestRendering()触发我的调试打印?

1 个答案:

答案 0 :(得分:0)

你的model.runGame();阻止操作?如果是这样,create()方法永远不会完成。因此LibGDX主线程卡在那里。但是LibGDX线程需要在后台运行。

也许你应该在另一个线程中启动model.runGame()。