2016-10-14 6 views
0

Я создаю интерфейс с помощью Libgdx Scene2d, и у меня есть несколько кнопок, для которых требуется другой стиль, это означает, что я должен создать один buttonStyle для каждой кнопки?Использование одного ButtonStyle для нескольких кнопок [Libgdx Scene2d]

 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

Ваше мнение верное. Для каждой кнопки, которая требует другого стиля, вам понадобится другой 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)); 

Надеюсь, что это поможет очистить некоторые вещи.

Смежные вопросы