我在使用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 - 正在加载"。
答案 0 :(得分:17)
我找到了解决这两个问题的方法。我在游戏扩展课程中添加了这个:
public void render() {
super.render();
}
由于这个问题已经解决,我不需要覆盖SetScreen方法。谢谢!
答案 1 :(得分:2)
将此设置为您的屏幕后,您需要立即拨打super.render()
扩展课程中的Game
。例如,我在主Game
扩展类中使用以下方法来设置屏幕:
@Override
public void setScreen(Screen screen)
{
super.setScreen(screen);
super.render();
}
这似乎启动render()
被召唤。
答案 2 :(得分:1)
只需删除游戏扩展类中的@Override render()即可解决问题。重写setScreen方法会导致你提到的闪烁。