Libgdx - 如何让对话淡出而不是整个舞台?
Libgdx - How to make the dialog fade but not the whole stage?
当我用
显示对话框时
someDialog.show(someStage);
对话框显示默认淡入动作。
舞台也淡入淡出。所以它让我的背景随着舞台一起淡化。
我怎样才能防止这种情况发生?
编辑:
这是我的示例代码:
屏幕显示方法:
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);
并使舞台和对话都不会淡入,但希望只保留对话或至少不保留背景的效果。
Stage 完成后不会清除 SpriteBatch 的颜色,因此当循环返回时,上次使用的颜色仍会应用到精灵批次。在您的情况下,最后使用的颜色恰好是对话框的颜色。
要解决此问题,请在 getBatch().draw(backgroundTexture, 0, 0, width, height);
行之前添加 getBatch().setColor(Color.WHITE);
。
而且我不认为你的整个舞台都在褪色。现在,您的背景纹理与舞台无关,只是它们共享使用 SpriteBatch。
当我用
显示对话框时someDialog.show(someStage);
对话框显示默认淡入动作。 舞台也淡入淡出。所以它让我的背景随着舞台一起淡化。
我怎样才能防止这种情况发生?
编辑: 这是我的示例代码:
屏幕显示方法:
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);
并使舞台和对话都不会淡入,但希望只保留对话或至少不保留背景的效果。
Stage 完成后不会清除 SpriteBatch 的颜色,因此当循环返回时,上次使用的颜色仍会应用到精灵批次。在您的情况下,最后使用的颜色恰好是对话框的颜色。
要解决此问题,请在 getBatch().draw(backgroundTexture, 0, 0, width, height);
行之前添加 getBatch().setColor(Color.WHITE);
。
而且我不认为你的整个舞台都在褪色。现在,您的背景纹理与舞台无关,只是它们共享使用 SpriteBatch。