2016-03-20 10 views
0

Ich benutze libgdx für mein Spiel und ich habe ein Viewport von 360x630, das Problem ist, dass ich FreetypeFont für meine Schriftarten verwende und die Größe ist auf 24 gesetzt, ich weiß nicht, wie viele Pixel 24 ist. Also was ich did istWie wird immer String in der Mitte des Bildschirms gedruckt?

width = Gdx.graphics.getWidth(); 
height = Gdx.graphics.getHeight(); 
font.draw(batch, wc.string, width/2 - string.length/2, height/2 - string.length/2); 

aber die Zeichenfolge Länge wird immer geändert, weil die Zeichenfolge immer auch geändert wird.

Antwort

1

unten eine Arbeit um mich immer mit wechselnder Größe eines beliebigen Text zu zentrieren verwenden, ich weiß nicht, ob es eine gute Praxis nutzlos sciene2D Tabelle zum Zweck hinzuzufügen, trotzdem hier ist die Lösung:

a Erstellen Tabelle:

private Table table; 

in Ihrer Show/erstellen Methode (abhängig von Ihrer Libgdx Version ...) fügen Sie die folgende:

table = new Table(skin); // if you have a skin or you leave it empty 
table.setFillParent(true); 
YourText = new Label("YourText", skin, "YourFont"); 
table.add(YourText).colspan(3).expandX().spaceBottom(50).row(); // you change 50 depend on your screen resolution till you get to the center 

Dies wird Ihren Text in einer Zelle/Zeile setzen und Zentriere es H/V abhängig vom Bildschirm natürlich.

Im erstellen/show Methode vergessen Sie nicht, den Tisch auf die Bühne hinzuzufügen:

stage.addActor(table); 

Jetzt in Ihrem Render-Methode Ihr fügen Sie folgendes:

stage.act(delta); 
stage.draw(); 

Schließlich Sie die entsorgen müssen Phase, weil der GC es nicht für Sie tut (eine libgdx Möglichkeit, GC Zeug zu tun), fügen Sie in Ihrer Wegwerfmethode diese hinzu:

+0

und die Schnur? Wo lege ich es hin? –

+0

in einem Label wie folgt yourString = neues Label ("Your Text", Skin, "Font"); –

+0

siehe bearbeiten .......... –

Verwandte Themen