Libgdx - 如何让对话淡出而不是整个舞台?

Nat*_*han 1 dialog stage fadein libgdx

当我显示一个Dialog时

someDialog.show(someStage);
Run Code Online (Sandbox Code Playgroud)

该对话框显示默认的FadeIn操作.舞台也渐渐淡出.因此它使我的背景随着舞台逐渐消失.

我怎样才能防止这种情况发生?

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

在屏幕显示方法中:

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

渲染代码:

@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;
    }
Run Code Online (Sandbox Code Playgroud)

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

   dialog.show(getStage());
Run Code Online (Sandbox Code Playgroud)

我试图将null作为第二个参数放到show方法中

dialog.show(getStage(), null);
Run Code Online (Sandbox Code Playgroud)

并且使得舞台和对话框都不会淡入但是想要仅保留对话框的效果,或者至少不保留背景效果.

Ten*_*r04 8

Stage完成时不会清理SpriteBatch的颜色,所以当循环返回时,最后使用的颜色仍然应用于sprite批处理.在您的情况下,最后使用的颜色恰好是对话框的颜色.

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

我不认为你的整个舞台正在消退.现在,你的背景纹理与舞台无关,只是它们都共享使用SpriteBatch.