2017-06-29 19 views

回答

0

您可以使用Label,如果你以這種方式使用scene2d

public class GdxText extends ApplicationAdapter { 

    Stage stage; 
    Label scoreLabel; 

    @Override 
    public void create() { 

     stage=new Stage(); 

     Label.LabelStyle labelStyle=new Label.LabelStyle(new BitmapFont(), Color.RED); 
     scoreLabel=new Label(String.format("%03d",0),labelStyle); 

     Table table =new Table(); 
     table.defaults().pad(2); 

     table.add(new Label("SCORE :",labelStyle)); 
     table.add(scoreLabel); 
     table.setPosition(200,300); 

     stage.addActor(table); 
    } 

    @Override 
    public void render() { 

     Gdx.gl.glClearColor(1,1,1,1); 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

     stage.draw(); 
     stage.act(); 
    } 

    public void increase(){ 
     CharSequence value=scoreLabel.getText(); 
     int v= Integer.valueOf(value.toString()); 
     scoreLabel.setText(String.format("%03d", ++v)); 
    } 

    @Override 
    public void resize(int width, int height) { 
     stage.getViewport().update(width,height,true); 
    } 

    @Override 
    public void dispose() { 
     stage.dispose(); 
    } 
} 

我使用的默認字體爲這個測試,你可以使用自己的字體。每當你想增加分數值increase()方法的價值時,你的分數就會增加1。

輸出:

enter image description here

+0

謝謝。我之前嘗試過這種技術。但現在我明白爲什麼這不起作用。我在sb.begin()和sb.end()之間放置了兩行代碼(stage.draw(); stage.act();)。但是在sb.end()之後放置這些行確實有效。 – Arnab

+0

當你調用'stage.draw()',一個內部調用的批處理'begin()'和繪製'end()'之後,你需要一次使用一個批處理。 – Aryan

相關問題