【问题标题】:LibGDX not running render() methodLibGDX 没有运行 render() 方法
【发布时间】:2013-03-17 22:32:25
【问题描述】:

我在使用 LibGDX 时遇到问题。

我有一个Screen,在它的render 方法中我有:

public class LoadingScreen implements Screen{
private OrthographicCamera guiCam;
private TankChallenge tankChallenge;
private SpriteBatch batcher;
private GL10 OpenGL;

public LoadingScreen(TankChallenge tankChallenge) {
    this.tankChallenge=tankChallenge;
    Gdx.graphics.setTitle("RobotChallange Beta - Loading");

    float AR = Gdx.graphics.getHeight()/Gdx.graphics.getWidth();
    guiCam = new OrthographicCamera(10,10 * AR);
    guiCam.position.set(10f/2,AR*10f/2,0);
    batcher = new SpriteBatch();

    OpenGL = Gdx.graphics.getGL10();
    //loadAssets();
}

@Override
public void render(float delta) {
    OpenGL.glClearColor(1, 0.5f, 1, 1);
    OpenGL.glClear(GL10.GL_COLOR_BUFFER_BIT);

    System.out.print("e");
    guiCam.update();
    Sprite sp = new Sprite();
    sp.setColor(1f,1f,0, 1);
    sp.setSize(100,100);
    sp.setOrigin(20, 0);

    batcher.setProjectionMatrix(guiCam.combined);
    batcher.begin();
    batcher.disableBlending();
    sp.draw(batcher);
    batcher.end();
}

我通过在实现 ApplicationListener 类中设置它来调用它。我知道它正在到达 LoadingScreen,因为 Title 实际上设置为“RobotChallenge Beta - Loading”。

【问题讨论】:

    标签: java android libgdx


    【解决方案1】:

    我找到了解决这两个问题的方法。我在游戏扩展类中添加了这个:

    public void render() {
        super.render();
    }
    

    多亏了这个问题解决了,我不需要重写 SetScreen 方法。谢谢!

    【讨论】:

      【解决方案2】:

      将其设置为您的屏幕后,您需要立即在您的Game 扩展类中调用super.render()。例如,我在我的主 Game 扩展类中使用以下方法来设置屏幕:

      @Override
      public void setScreen(Screen screen)
      {
          super.setScreen(screen);
          super.render();
      }
      

      这似乎开始调用render()

      【讨论】:

      • 这样解决了render不被调用的问题。现在我遇到了一个问题,我想我应该在另一个话题中提问。我在渲染时看到闪烁或闪烁。如果我把它放在渲染中: OpenGL.glClearColor(1, 0.5f, 1, 1); OpenGL.glClear(GL10.GL_COLOR_BUFFER_BIT);我看到屏幕一直在不停地闪烁,从纸浆到黑色一遍又一遍。
      • 我有一个 System.out.print("e");并且输出只有一个“e”。我不知道怎么了。
      • 抱歉我不知道闪烁的问题,我好久没用libgdx了,我只记得render()没有为我开火并且修复它遇到了很多麻烦并钓鱼我的旧代码来自我的项目文件夹被遗忘的深处。
      • 谢谢。我会在另一个主题中提问,因为它与这个主题是 0 相关的。
      • 问题实际上是由于您的修复,渲染方法只被调用一次......我在 LoadingScreen 的 render() 的渲染中有一个打印,它只显示一次......
      【解决方案3】:

      只需删除 Game 扩展类中的 @Override render() 即可解决问题。覆盖 setScreen 方法会导致您提到的闪烁。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-27
        • 1970-01-01
        • 1970-01-01
        • 2020-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-01
        相关资源
        最近更新 更多