2015-11-22 163 views
0

我想使文本出現在屏幕中央,表示 當前的級別。它應該逐漸消失,逐漸消失。我使用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); 

淡入,淡出,阿爾法..不工作。我嘗試了「moveBy」並且它有效,所以它似乎是一個關於演員外觀的問題。有什麼東西可以逃脫我。

回答

1

淡入淡出操作修改演員顏色的Alpha值(getColor().a)。您直接繪製字體而不應用與演員相關的顏色。

看看如何實現Label.draw以獲得更好的理解。在此期間,只要嘗試加入這個上面你font.draw(...)電話:

font.setColor(getColor()) 

或者,如果你不希望修改整個色彩,只是α,試試這個:

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

UPDATE :

還要注意的是,你應該應用parentAlpha(平局的第二個參數 - 在你的榜樣打成三角洲)到最終α:

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

這可以讓你的演員褪色,如果你改變舞臺或任何父母的alpha。

+0

謝謝你的幫助。我明白了這個問題。無論如何,我不明白你的更新,如果我嘗試你的第一個解決方案,fadeIn()不起作用。標籤出現然後逐漸消失,但它也應該逐漸出現。 – user3075478

+0

在添加動作之前,請嘗試'textActor.getColor()。a = 0'。它應該然後正確淡入。閱讀[this](https://github.com/libgdx/libgdx/wiki/Scene2d#drawing)以更好地解釋我的更新答案。 – a9y

+0

謝謝,現在它工作! – user3075478