libgdx-如何使对话框逐渐消失,但不是整个阶段



当我显示与

的对话框时
someDialog.show(someStage);

对话框显示使用默认的Fadein动作。舞台也消失了。因此,这使我的背景与舞台一起消失。

如何防止这种情况发生?

编辑:这里我的示例代码:

在屏幕显示方法中:

Texture bg = new Texture(Gdx.files.internal(src));
stage = new Stage(game.getViewport(), batch);
stage.addActor(someDialog) //just normal dialog

渲染代码:

@Override
    public void render(float delta) {
        super.render(delta);
        getBatch().begin();
        getBatch().draw(backgroundTexture, 0, 0, width, height);
        getBatch().end();
        getStage().act(delta);
        getStage().draw();
        time += delta;
    }

我在某些事件触发时显示对话框:

   dialog.show(getStage());

我试图将null作为Show方法的第二个参数

dialog.show(getStage(), null);

并使阶段和对话框不褪色,而是要保留对话框或至少不是背景的效果。

阶段完成后不会清理spriteBatch的颜色,因此,当循环返回时,最后使用的颜色仍将应用于Sprite批处理。在您的情况下,最后使用的颜色恰好是对话框的颜色。

要解决此问题,请在getBatch().draw(backgroundTexture, 0, 0, width, height);行之前添加getBatch().setColor(Color.WHITE);

,我认为您的整个舞台都不会褪色。目前,您的背景纹理与舞台无关,除了它们都共享SpriteBatch的使用。

最新更新