三重播放按钮:在图像按钮上正确对齐的动态文本(假设文本对齐,居中)

时间:2012-03-29 13:44:14

标签: java html5 playn

我正在创建一个带有两个图像按钮的窗口(在我的playN游戏中使用TriplePlay)。

现在我需要这些按钮上的动态文本。但是当我添加带图像的按钮(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 个答案:

答案 0 :(得分:2)

创建一个带有文字和图标的按钮很简单:

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