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);
之前添加了一个随机图像并修复了它。
我仍然不知道是什么原因造成的,也许我漏掉了什么...
如果你能告诉我这里发生了什么,那就太好了!
干杯
我正在开发我的第二个应用程序,到目前为止一切顺利。但是现在我遇到了一个问题,我就是找不到解决方案。
我一直在使用 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);
之前添加了一个随机图像并修复了它。
我仍然不知道是什么原因造成的,也许我漏掉了什么...
如果你能告诉我这里发生了什么,那就太好了!
干杯