我想让文字显示在屏幕的中央,表示 目前的水平。它应该逐渐出现,一段时间后逐渐消失。我正在使用带有舞台,演员的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外观的问题。有些东西逃脱了我。
答案 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或任何父母,这会让您的演员褪色。