2016-10-14 6 views
0

を使用して、これは私が各ボタンに1つのButtonStyleを作成しなければならないことを意味?私はLibgdx Scene2dを使用してインターフェイスを作ってるんだ、と私はすべて異なるスタイルを必要とし、複数のボタンがあり、複数のボタンに1つの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)); 

これは、いくつかのことをクリアするのに役立ちます。

関連する問題