我想用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()
甚至觸發我的調試打印?