代码之家  ›  专栏  ›  技术社区  ›  yafrack

LibGDX未运行render()方法

  •  5
  • yafrack  · 技术社区  · 13 年前

    我在使用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 班我知道它即将进入加载屏幕,因为标题实际上设置为“机器人挑战测试版-加载”。

    3 回复  |  直到 13 年前
        1
  •  20
  •   Matt Cain Amit    13 年前

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

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

    多亏了这一点,问题得到了解决,我不需要重写SetScreen方法。谢谢

        2
  •  2
  •   Matt Cain Amit    13 年前

    将此设置为屏幕后,您需要立即拨打 super.render() 在您的 Game 扩展类。例如,我在main中使用以下方法 游戏 用于设置屏幕的扩展类:

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

    这似乎开始了 render() 被呼叫。

        3
  •  1
  •   milechainsaw    13 年前

    只需在游戏扩展类中删除@Override render(),即可解决问题。重写setScreen方法会导致您提到的闪烁。