对多个 Button 使用一个 ButtonStyle[Libgdx Scene2d]
Using one ButtonStyle for more than one Button[Libgdx Scene2d]
我正在使用 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
你的想法是正确的。对于需要不同样式的每个按钮,您将需要不同的 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));
希望这有助于澄清一些事情。
我正在使用 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
你的想法是正确的。对于需要不同样式的每个按钮,您将需要不同的 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));
希望这有助于澄清一些事情。