2014-08-29 2 views
0

Я новичок в LibGDX, и я принимаю его медленно. Я все еще пытаюсь понять большинство вещей, поэтому обычно поисковые запросы Google не помогают из-за того, что они слишком сложны. У меня есть главное меню, в котором есть текст, который я хочу сосредоточить независимо от размера экрана. Вот код, который у меня есть для этого меню.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

Можно сделать это путь Девять Magics предложенный, однако один, как правило, делают это через Stage, который является частью scene2d.

Более конкретно можно было бы использовать scene2d.ui, который является связка Actor с как Button, Image, Label и т.д. Вы можете прикрепить ClickListener к Button, например, и реагировать на это событие.

Кроме того, для макетирования есть один очень мощный 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. *.

Смежные вопросы