LibGDX Scene2d 动作影响多个 Actor

LibGDX Scene2d Action affects multiple Actors

我正在开发我的第二个应用程序,到目前为止一切顺利。但是现在我遇到了一个问题,我就是找不到解决方案。

我一直在使用 scene2d 舞台来展示一切。现在我添加了一个黑色图像,每当调用一个新屏幕时它就会淡出(作为过渡)。

我的问题是,当我将淡出动作添加到我的黑色图像时,它也会淡出背景。有趣的是,只有背景受到影响,其他演员什么都没有。

我试过更改 Actor 的顺序,将它们分组,清除背景中的所有动作,将他的 alpha 设置为 1,但没有任何效果。

谢谢你帮助我!

背景:

public class BackgroundColor extends Actor {

public BackgroundColor(int x) {

    this.setBounds(x, 0, 270, 960);
}

public void act(float delta) {

}

public void draw(Batch batch, float alpha) {

        batch.draw(image, this.getX(), this.getY(), this.getWidth(), this.getHeight());


    }
}

对于屏幕:

public class GameScreen implements Screen {

public Stage stage;

public BackgroundColor backgroundColor;

public Image black;

public GameScreen() {

    stage = new Stage(new ExtendViewport(540, 900, 540, 960));

    Gdx.input.setInputProcessor(stage);
    setupStage();
}

private void setupStage() {

    backgroundColor = new BackgroundColor(0);
    stage.addActor(backgroundColor);

    //this is the black layer
    black = new Image(AssetLoader.black);
    black.setBounds(0, 0, stage.getWidth(), stage.getHeight());
    stage.addActor(black);
    black.addAction(Actions.sequence(Actions.fadeOut((float)0.5), Actions.touchable(null)));
}

@Override
public void show() {

}

@Override
public void render(float deltaTime) {

    Gdx.gl.glClear(0);
    stage.act(Gdx.graphics.getDeltaTime());
    stage.draw();
}

所以,我有点明白了...

显然将不同的图像作为舞台的第一层可以解决问题。

我在 backgroundColor = new BackgroundColor(0); 之前添加了一个随机图像并修复了它。

我仍然不知道是什么原因造成的,也许我漏掉了什么...

如果你能告诉我这里发生了什么,那就太好了!

干杯