2013-08-21 5 views
5

Я хочу создать окно пользовательского интерфейса в libgdx, где верхняя часть (часть, содержащая заголовок и позволяющая перетаскивать окно) имеет другой цвет фона из остальной части окна. Я могу установить только цвет фона для всего окна, можно ли изменить его только для этой верхней части?Верхний цвет окна Scene2d.ui?

код до сих пор:

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

Окно рассматривается как один девятипакет. Вы можете напрямую изменить текстуру, но для того, чтобы иметь два разных цвета во время выполнения, потребуется ваш собственный виджет Window. – Jyro117

+0

@ Jyro117 Спасибо за информацию. Я не так хорошо знаком с девятью очками. С изменением текстуры напрямую вы подразумеваете, что я бы включил верхний цвет в файл изображения, на котором он основан? – mattboy

+1

Правильно, вы просто изменили бы файл изображения. Ninepatch - это просто название текстуры, которую вы разделили на 9 подчастей и растягиваете их, чтобы они соответствовали той форме, которую вы хотите. – Jyro117

ответ

6

Верхний бар для пользовательского интерфейса Windows, в libgdx использует ту же структуру, что и все окно. Чтобы изменить цвет верхней панели, необходимо изменить основной файл текстуры. libgdx рассматривает это как целое, и нет встроенного способа указать отдельные цвета для каждого компонента окна.

Существуют и другие способы, но они нетривиальны и требуют написания собственного класса виджетов для репликации большей части поведения встроенного класса Window.

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