2013-08-21 6 views
5

Chcę utworzyć okno interfejsu użytkownika w libgdx, gdzie górna część (część zawierająca tytuł i która pozwala przeciągnąć okno) ma inny kolor tła niż reszta okna. Mogę ustawić tylko kolor tła dla całego okna, czy można go zmienić tylko dla tej górnej części?Górny kolor okna Scene2d.ui?

kod do tej pory:

WindowStyle windowStyle = new WindowStyle(new BitmapFont(), Color.WHITE, skin.newDrawable("white", Color.BLACK)); 

    Window window = new Window("test", windowStyle); 
    window.setMovable(true); 
    window.padTop(20); 

    stage.addActor(window); 
    window.setPosition(100, 100); 
    window.setSize(500, 300); 
+1

Okno traktowane jest jako pojedyncza ninja. Zamiast tego można zmienić teksturę bezpośrednio, ale aby uzyskać dwa różne kolory w czasie wykonywania, wymagany jest własny widget okna. – Jyro117

+0

@ Jyro117 Dzięki za informacje. Nie jestem zaznajomiony z ninepatch. Czy zmieniając tekst bezpośrednio, oznacza to, że umieściłbym górny kolor w pliku obrazu, na którym jest oparty? – mattboy

+1

To prawda, po prostu zmieniasz plik obrazu. Ninepatch to tylko nazwa tekstury, którą dzielisz na 9 części i rozciągasz, aby pasowały do ​​dowolnego kształtu. – Jyro117

Odpowiedz

6

Górny pasek do interfejsu systemu Windows w libgdx wykorzystuje tę samą konsystencję jak całego okna. Aby zmienić kolor górnego paska, plik tekstur leżący u podstaw będzie wymagał modyfikacji. libgdx traktuje to jako całość i nie ma wbudowanego sposobu określania oddzielnych kolorów dla każdego komponentu okna.

Istnieją inne sposoby, ale nie są one trywialne i wymagają napisania własnej klasy widżetów, aby powielić większość zachowań wbudowanej klasy okna.

Powiązane problemy