我试图在屏幕之间转换时实现简单的fadeIn和fadeOut效果。我已经设置了一个舞台,但在设计我的应用程序时,我没有使用任何演员。因此,我把它作为演员的黑屏,然后我在show()上将alpha设置为0。当淡出我的作品时,我会使用
淡化黑色图像stage.addAction(Actions.sequence(Actions.fadeIn(1), Actions.run(new Runnable() {
@Override
public void run() {
game.setScreen(new gameScreen(game));
这是有效的,但是有一个小问题,在淡入淡出结束时有一个小的闪光一毫秒显示前一个屏幕在切换之前所以转换不平滑,黑色图像在切换之前被删除屏幕。我该如何解决这个问题?
答案 0 :(得分:1)
你的问题是,在上次呈现你的应用程序的其余部分之前,正在调用 stage.clear()和 stage.dispose()。
解决方案是覆盖 dispose()屏幕方法,并手动将一些标志 shouldBeRendered 设置为false,然后处理您的舞台。
boolean shouldBeRendered = true;
...
public void render(float delta)
{
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
if(shouldBeRendered)
{
//here you render all
}
...
}
...
@Override
public void dispose()
{
shouldBeRendered = false;
stage.clear();
stage.dispose();
}
您可以在渲染和处置方法中添加一些 System.out.println(),以查看屏幕生命周期的流程