【问题标题】:Rendering method isn't drawing anything JAVA LibGDX渲染方法没有绘制任何东西 JAVA LibGDX
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-29
      • 2017-10-08
      • 1970-01-01
      • 2017-01-22
      • 2021-04-02
      相关资源
      最近更新 更多