2016-10-14 7 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)); 

희망 사항은 몇 가지 사항을 정리하는 데 도움이됩니다.

관련 문제