2014-04-03 111 views
0

我想用libGdx做一个游戏并使用MVC模式。我有一个我的游戏模型,我打算一直在运行,而不是从应用程序的渲染方法。正因为如此,我在我的课上完成了这个任务,从libgdx继承了Game: 首先,我将连续渲染设置为false,并调用渲染方法,我使用我的游戏屏幕作为模型的侦听器。渲染方法没有绘制任何东西JAVA LibGDX

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()甚至触发我的调试打印?

回答

0

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

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