某些操作不起作用

时间:2015-11-22 21:55:06

标签: libgdx action scene2d

我想让文字显示在屏幕的中央,表示 目前的水平。它应该逐渐出现,一段时间后逐渐消失。我正在使用带有舞台,演员的scene2d ......所以我会使用动作。

这就是我现在所拥有的:

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的类中..

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);

fadeIn,fadeOut,alpha ..不起作用。我尝试使用“moveBy”并且它有效,所以它似乎是一个关于Actor外观的问题。有些东西逃脱了我。

1 个答案:

答案 0 :(得分:1)

淡入淡出操作会修改Actor颜色的Alpha值(getColor().a)。您正在直接绘制字体而不应用与actor关联的颜色。

了解如何实施Label.draw以便更好地理解。在此期间,只需尝试在font.draw(...)电话上方添加此内容:

font.setColor(getColor())

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

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

<强>更新

另请注意,您应该将parentAlpha(draw的第二个参数 - 在示例中标记为delta)应用于最终的alpha:

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

如果您更改舞台的alpha或任何父母,这会让您的演员褪色。