2014-08-29 34 views
0

我是LibGDX的新手,我慢慢地服用。我仍然試圖理解大多數事情,這就是爲什麼通常谷歌搜索沒有幫助,因爲它們太複雜了。無論屏幕大小如何,我都有一個主要的菜單,其中包含我希望居中的文字。以下是我對該菜單的代碼。LibGDX - 如何讓我的文本居中?

public class Menu implements Screen { 

SlingshotSteve game; 

OrthographicCamera camera; 

public Menu(final SlingshotSteve gam) { 
    this.game = gam; 

    camera = new OrthographicCamera(); 
    camera.setToOrtho(false, 800, 480); 
} 

@Override 
public void render(float delta) { 

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

    camera.update(); 
    game.batch.setProjectionMatrix(camera.combined); 

    game.batch.begin(); 
    game.font.draw(game.batch, "Welcome to Slingshot Steve!!! ", 100, 150); 
    game.font.draw(game.batch, "Tap anywhere to begin!", 100, 100); 
    game.batch.end(); 

    if (Gdx.input.isTouched()) { 
     game.setScreen((Screen) new GameScreen(game)); 
     dispose(); 
    } 
} 

@Override 
public void resize(int width, int height) { 

} 

@Override 
public void show() { 

} 

@Override 
public void hide() { 

} 

@Override 
public void pause() { 

} 

@Override 
public void resume() { 

} 

@Override 
public void dispose() { 

} 

} 

回答

1

我來這裏救你!

要與你的BitmapFont繪製的字符串,你可以利用這個超級漂亮的方法來獲得寬度/高度:

game.font.getBounds(String string) 

而在你的情況下使用它,它會是這樣的:

game.font.getBounds("Tap anywhere to begin!").width/2; 

乾杯!

1

有可能這樣做Nine Magics建議,但通常會通過Stage,它是scene2d的一部分。

更具體地,應當使用scene2d.ui其爲Actor就像ButtonImageLabel等一堆你可以附加ClickListenerButton例如並在此事件作出反應。

此外,爲了佈局,有一個非常強大的Actor,即Table,您可以很容易地使用它來將事情集中在屏幕上。

一些非常簡約代碼:

// do this once, in create() or show() 
Skin skin = new Skin("uiskin.json"); // get the demo skin from the libgdx test resources 
Stage stage = new Stage(); 
Table table = new Table(skin); 
table.add("Welcome to Slingshot Steve!!!"); 
table.row(); 
table.add("Tap anywhere to begin!"); 
stage.addActor(table); 

// do this in your render loop 
stage.act(); 
stage.draw(); 

您可以找到 「默認」 的皮膚資源here。你需要獲得所有的uiskin。*文件。