我正在使用Libgdx Scene2d创建一个界面,我有多个按钮都需要不同的样式,这意味着我必须为每个按钮创建一个buttonStyle?
btnStyle = new TextButton.TextButtonStyle();
btnStyle.up = btnSkin.getDrawable("boxBtn");
btnStyle.checked = btnSkin.getDrawable("boxBtn1");
btnBox = new Button(btnStyle);
anotherButton = new Button(newStyle?) //this is what I mean
答案 0 :(得分:0)
你的想法是正确的。对于需要不同样式的每个按钮,您需要使用不同的TextButtonStyle
。
TextButtonStyle styleOne = new TextButtonStyle();
styleOne.up = ...someDrawable1
TextButtonStyle styleTwo = new TextButtonStyle();
styleTwo.up = ...someDrawable2
TextButton button1 = new TextButton("Button1", styleOne);
TextButton button2 = new TextButton("Button2", styleTwo);
如果您发现一遍又一遍地使用相同的样式集,则可以创建static
样式并将其用于按钮。
public class Styles {
public static final TextButtonStyle styleOne = new TextButtonStyle();
public static final TextButtonStyle styleTwo = new TextButtonStyle();
public static void initStyles() {
styleOne.up = ...
styleTwo.up = ....
}
}
然后在加载资产时致电Styles.initStyles()
。
如果你想自定义每个样式,但仍然使用一组默认样式属性,你可以尝试这样的事情:
public class Styles {
public static TextButtonStyle createTextButtonStyle(Drawable up, Drawable down) {
TextButtonStyle style = new TextButtonStyle();
style.up = up;
style.down = down;
style.font = Assets.getDefaultFont() //For example
style.fontColor = Assets.getDefaultFontColor() //For example
}
}
然后,当您想要创建一个按钮时,您可以这样做:
TextButton button = new TextButton("Text", Styles.createTextButtonStyle(drawable1, drawable2));
希望这有助于澄清一些事情。