Libgdx scene2d Actor 中的 BitmapFont 动画
BitmapFont animation in Libgdx scene2d Actor
我正在尝试为包含使用淡入操作使用位图字体编写的简单消息的 actor 制作动画,但它不起作用。
这是我的代码。
public class Message extends Actor{
BitmapFont font;
String message;
float x, y;
public Message(BitmapFont font, String message, float x, float y) {
this.font = font;
this.message = message;
this.x = x;
this.y = y;
}
@Override
public void draw(Batch batch, float parentAlpha) {
Color color = getColor();
batch.setColor(color.r, color.g, color.b, color.a * parentAlpha);
font.setColor(color.r, color.g, color.b, color.a * parentAlpha);
font.draw(batch, message, x, y);
}
}
然后当点击一个按钮时,应该会出现消息,但它只是在没有动画的情况下出现。
button.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
BitmapFont font = new BitmapFont(Gdx.files.internal("myfont.font"));
Message message = new Message(font, "Tap Here", 100, 20);
stage.addActor(message);
message.addAction(Actions.fadeIn(5));
}});
同台的其他演员动画在我调用时工作正常:
stage.act(delta);
stage.draw();
您应该在添加淡入动作之前将消息 actor 的 alpha 设置为零:
button.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
BitmapFont font = new
BitmapFont(Gdx.files.internal("myfont.font"));
Message message = new Message(font, "Tap Here", 100, 20);
message.getColor().a = 0f; // add this line
stage.addActor(message);
message.addAction(Actions.fadeIn(5));
}});
我正在尝试为包含使用淡入操作使用位图字体编写的简单消息的 actor 制作动画,但它不起作用。
这是我的代码。
public class Message extends Actor{
BitmapFont font;
String message;
float x, y;
public Message(BitmapFont font, String message, float x, float y) {
this.font = font;
this.message = message;
this.x = x;
this.y = y;
}
@Override
public void draw(Batch batch, float parentAlpha) {
Color color = getColor();
batch.setColor(color.r, color.g, color.b, color.a * parentAlpha);
font.setColor(color.r, color.g, color.b, color.a * parentAlpha);
font.draw(batch, message, x, y);
}
}
然后当点击一个按钮时,应该会出现消息,但它只是在没有动画的情况下出现。
button.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
BitmapFont font = new BitmapFont(Gdx.files.internal("myfont.font"));
Message message = new Message(font, "Tap Here", 100, 20);
stage.addActor(message);
message.addAction(Actions.fadeIn(5));
}});
同台的其他演员动画在我调用时工作正常:
stage.act(delta);
stage.draw();
您应该在添加淡入动作之前将消息 actor 的 alpha 设置为零:
button.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
BitmapFont font = new
BitmapFont(Gdx.files.internal("myfont.font"));
Message message = new Message(font, "Tap Here", 100, 20);
message.getColor().a = 0f; // add this line
stage.addActor(message);
message.addAction(Actions.fadeIn(5));
}});