当我显示与
的对话框时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的使用。