有些动作不起作用

Some Actions do not work

我想让一个文字出现在屏幕中央,表示 目前的水平。它应该逐渐出现,并在一段时间后逐渐消失。我将 scene2d 与舞台、演员一起使用。所以我会使用 Actions。

这是我现在拥有的:

public class TextActor extends Actor {

    private BitmapFont font;
    private CharSequence charSequence;

    public TextActor(CharSequence charSequence) {
        font = new BitmapFont(Gdx.files.internal("fonts/white_standard_font.fnt"));
        this.charSequence = charSequence;
    }

    @Override
    public void act(float delta) {
        super.act(delta);
    }

    @Override
    public void draw(Batch batch, float delta) {
        super.draw(batch, delta);
        font.draw(batch, charSequence, getX(), getY());
    }
}

在创建 TextActor 的 class 中..

textActor.addAction(Actions.sequence(Actions.fadeIn(1f), Actions.delay(1f), Actions.fadeOut(1f), new Action() {
    @Override
    public boolean act(float delta) {
        textActor.remove();
        transitionInProgress = false;
        gameState = GameState.RUNNING;
        Gdx.input.setInputProcessor(stage);
        return true;
    }
}));
gameTable.addActor(textActor);

淡入、淡出、alpha.. 不起作用。我尝试使用 "moveBy" 并且它有效,所以这似乎是关于 Actor 外观的问题。有件事让我想不通。

淡入淡出动作修改 Actor 颜色的 alpha 值 (getColor().a)。您正在直接绘制字体,而没有应用与演员关联的颜色。

看看 Label.draw 是如何实现的,以便更好地理解。与此同时,只需尝试将此添加到您的 font.draw(...) 调用上方:

font.setColor(getColor())

或者,如果您不想修改整个颜色,只想修改 alpha,试试这个:

font.getColor().a = getColor().a;

更新:

另请注意,您应该将 parentAlpha(绘图的第二个参数 - 在您的示例中标记为增量 )应用到最终的 alpha:

font.getColor().a = getColor().a * parentAlpha

如果您更改舞台的 alpha 或任何 parents。

,这允许您的演员淡入淡出