2017-12-21 29 views
0

fadeIn 작업을 사용하여 bitmapfont로 작성된 간단한 메시지가 포함 된 액터에 애니메이션을 적용하려하지만 작동하지 않습니다.Libgdx scene2d의 BitmapFont 애니메이션 액터

여기 내 코드입니다.

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(); 
+0

을 * * fadeIn **>이 액션이 시작될 때 (이미 1) 알파를 1의 알파로 변환하면 애니메이션없이 나타납니다. – Aryan

+1

각 비트마다 새 bitmapfont 객체를 만드는 것은 좋은 해결책이 아니므로주의하십시오. – Aryan

답변

0
당신은 fadeIn 작업을 추가하기 전에 제로로 메시지 배우의 알파를 설정해야

:

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