Кнопка Tripleplay: динамический текст с правильным выравниванием на кнопке изображения (скажем, текст выровнен по центру) - PullRequest
1 голос
/ 29 марта 2012

Я создаю окно с двумя кнопками изображений (используя TriplePlay в моей игре PlayN).

Теперь мне нужен динамический текст на этих кнопках. Но когда я добавляю кнопки с изображениями (setIcon), я не могу добавить текст на него одновременно. Пожалуйста, проверьте следующий блок кода, который я использую сейчас.


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);

здесь я попытался создать корень, затем добавить кнопку с изображениями, затем создать другой корень и добавить метки, чтобы он отображался как текст на кнопках изображений. Но я знаю, что это плохой способ сделать это, и выравнивание не будет соответствовать тому, что нужно, поскольку это динамический текст. Можно ли добавить кнопку с изображением и надписью на ней?

Спасибо в ожидании

1 Ответ

2 голосов
/ 30 марта 2012

Создание кнопки с текстом и значком тривиально:

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

Затем вы можете изменить текст на кнопке в любое время, например, так:

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

Есливам нужна кнопка с фоновым изображением с текстом, отображаемым поверх фона, затем выполните следующие действия:

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

Обратите внимание, что для использования вам потребуется последний код TriplePlay (от Github)ImageBackground.Последний код также поддерживает фоны в стиле Flash * scale9 :

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