2012-03-29 3 views
1

Ich erstelle ein Fenster mit zwei Bildschaltflächen (mit TriplePlay in meinem PlayN Spiel).Tripleplay Button: Dynamischer Text mit richtiger Ausrichtung auf einer Bildschaltfläche (sagen wir den Text ausgerichtet, Mitte)

Jetzt brauche ich dynamischen Text auf diesen Tasten. Aber wenn ich Schaltflächen mit Bildern hinzufüge (setIcon), kann ich nicht gleichzeitig Text hinzufügen. Bitte überprüfen Sie den folgenden Codeblock, den ich jetzt verwende.


Interface iface = new Interface(null); 
pointer().setListener(iface.plistener); 
Styles buttonStyles = Styles.none().add(Style.BACKGROUND.is(new NullBackground())). 
    addSelected(Style.BACKGROUND.is(Background.solid(0xFFCCCCCC))); 
Stylesheet rootSheet = Stylesheet.builder().add(Button.class, buttonStyles).create(); 
Root buttonroot = iface.createRoot(AxisLayout.horizontal().gap(150), rootSheet); 
buttonroot.setSize(width_needed, height_needed); 
buttonroot.addStyles(Styles.make(Style.BACKGROUND.is(new NullBackground()))); 
graphics().rootLayer().add(buttonroot.layer); 
Button you = new Button().setIcon(buttonImage); 
Button friend = new Button().setIcon(buttonImage); 
buttonroot.add(you).add(friend); 
buttonroot.layer.setTranslation(x_needed, y_needed); 
Root nameroot = iface.createRoot(AxisLayout.horizontal().gap(300), rootSheet); 
nameroot.setSize(width_needed, height_needed); 
nameroot.addStyles(Styles.make(Style.BACKGROUND.is(new NullBackground()))); 
graphics().rootLayer().add(nameroot.layer); 
name = new Label("YOU");// we need the dynamic string variable instead 
friendName = new Label("FRIEND"); // we need the dynamic string variable instead 
nameroot.add(name).add(friendName); 
nameroot.layer.setTranslation(x_needed, y_needed); 

hier habe ich versucht, eine Wurzel dann mit Bildern hinzufügen machen Taste, um es dann eine andere Wurzel und fügen Sie Etiketten auf sie zu machen, so dass sie zeigen, wie Text auf das Bild Tasten sein. Aber ich weiß, dass dies eine schlechte Art ist, es zu tun, und die Ausrichtung wird nicht dem entsprechen, was benötigt wird, da es ein dynamischer Text ist. Gibt es trotzdem einen Button mit Bild und einem Label?

Dank im Vorgriff

Antwort

2

eine Schaltfläche mit dem Text erstellen und ein Symbol ist trivial:

Button button = new Button("Text").setIcon(iconImage); 

Anschließend können Sie den Text auf der Taste, die Sie jederzeit ändern mögen, etwa so:

button.text.update("New Text"); 

Wenn Sie eine Schaltfläche mit einem Hintergrund Bild mit Text über den Hintergrund gerendert werden möchten, dann tun Sie Folgendes:

Button button = new Button("Text"). 
    addStyles(Background.is(Background.image(bgImage))); 

Beachten Sie, dass Sie den neuesten TriplePlay-Code (von Github) benötigen, um das ImageBackground zu verwenden. Der neueste Code unterstützt auch Flash-Stil "scale9" Hintergründe:

Button button = new Button("Text"). 
    addStyles(Background.is(Background.scale9(bgImage))); 
+0

Dies ist genau, was ich brauchte. Ich danke dir sehr. – Rockcollins

+0

Funktioniert es, wenn ich Tripleplay 1.1 verwende? oder muss ich auch die neuesten Updates von Github klonen? – Rockcollins

+1

ImageBackground benötigt den neuesten Code, aber alles andere sollte mit 1.1 funktionieren. – samskivert

Verwandte Themen