Android libgdx中屏幕之间的屏幕闪烁转换

Android libgdx中屏幕之间的屏幕闪烁转换,android,libgdx,Android,Libgdx,我所有的屏幕都按预期工作,除了一个屏幕调用另一个屏幕时出现闪烁。例如,从我的主屏幕调用StoreScreen,但这会在所有屏幕上发生 这是我的主屏幕显示、渲染和调用另一个屏幕的按钮 public StoreScreen(TiltorGame tiltorGame) { game = tiltorGame; w = 800; h = 480; shapeDebugger = new ShapeRenderer(); } @Override public v

我所有的屏幕都按预期工作,除了一个屏幕调用另一个屏幕时出现闪烁。例如,从我的主屏幕调用StoreScreen,但这会在所有屏幕上发生

这是我的主屏幕显示、渲染和调用另一个屏幕的按钮

 public StoreScreen(TiltorGame tiltorGame) {
    game = tiltorGame;
    w = 800;
    h = 480;
    shapeDebugger = new ShapeRenderer();
}
@Override
    public void show() {
        camera = new OrthographicCamera();
        camera.setToOrtho(false, w, h);
        FitViewport viewp = new FitViewport(w, h, camera); // change this to
                                                            // your needed
                                                            // viewport
        stage = new Stage(viewp); // also pass the singelton batch here. Try
                                    // just to use onee batch to have a good
                                    // performance.
        Gdx.input.setInputProcessor(stage);
        font = new BitmapFont();
        font.setColor(0.5f, 0.4f, 0, 1); // Brown is an underated Colour
        shapeDebugger = new ShapeRenderer();
        table1 = new Table();
        table2 = new Table();
        table3 = new Table();

        drawTable1();
    }
//

//

这里还有商店屏幕展示

@Override
public void show() {
camera = new OrthographicCamera();
camera.setToOrtho(false, w, h);
FitViewport viewp = new FitViewport(w, h, camera); // change this to
                                                    // your needed
                                                    // viewport
stage = new Stage(viewp); // also pass the singelton batch here. Try
                            // just to use onee batch to have a good
                            // performance.
Gdx.input.setInputProcessor(stage);
font = new BitmapFont();
font.setColor(0.5f, 0.4f, 0, 1); // Brown is an underated Colour
table1 = new Table();
drawButtons();
}

我认为这是因为每次都在show()函数中创建一个新的摄影机和stage,而不是在构造函数调用中初始化这些变量。位图字体当然是一种本机资源,必须显式地dispose()'d,因此我确信有更好的方法来实现这一点在渲染方法内部。您不需要在每个帧中将表添加到舞台。
TextButton buttonStore = new TextButton("Store", skin, "default");

buttonStore.setWidth(400f);
buttonStore.setHeight(75f);
buttonStore.addListener(new ClickListener() {
    @Override
    public void clicked(InputEvent event, float x, float y) {
        game.setScreen(new StoreScreen(game));
    }
});

table1.add(buttonStore);
table1.row();
@Override
public void show() {
camera = new OrthographicCamera();
camera.setToOrtho(false, w, h);
FitViewport viewp = new FitViewport(w, h, camera); // change this to
                                                    // your needed
                                                    // viewport
stage = new Stage(viewp); // also pass the singelton batch here. Try
                            // just to use onee batch to have a good
                            // performance.
Gdx.input.setInputProcessor(stage);
font = new BitmapFont();
font.setColor(0.5f, 0.4f, 0, 1); // Brown is an underated Colour
table1 = new Table();
drawButtons();
}