Пишем загрузчик UI из XML для LibGDX (часть 1)

Всем привет! Сегодня мы начнем разрабатывать загрузчик UI слоя разметки из XML файла для LibGDX.

Как нам известно в LibGDX есть набор классов для организации пользовательского интерфейса (Label, Button и другие).

Для начала необходимо подготовиться json файл с настройками для объекта Skin. Он отвечает за то как должны выглядеть и вести себя элементы UI LibGDX. Рассмотрим класс Skin и структуру JSON для его конфигурирования.

Базовая структура JSON для Skin:

className — полное имя класса объекта (к примеру класс цвета com.badlogic.gdx.graphics.Color). name — имя ресурса, добавленного в Skin.

Пример:

В примере расписаны описания цветов(white, red, yellow), шрифта (medium) и стилей(default, toggle, green) для текстовой кнопки (TextButton).

Загружаем подготовленный JSON в конструкторе Skin:

Еще один вариант использования Skin (когда в JSON нет данных о файле шрифта):

Теперь можем приступать к написанию класса для загрузки слоя UI из XML. 

Создадим класс UiLoader

В конструкторе обязательно передаем объект класса Skin для дальнейшего его использования при создании элементов UI.

Опишем функцию загрузки

Данная функция вернет по результату загрузки объект класса Group в котором будут расположены все элементы UI в зависимости от заданного размера базового экрана (xml тег resize, за счет чего на всех экранах изображение должно выглядеть одинаково).

Начнем описывать вспомогательные функции загрузки (_loadItemsFromXmlElement):

Как вы уже заметили в коде присутствует функция текстового преобразования значения «origin», вот собственно и она:

В завершении первой части рассмотрим функцию загрузки UI элемента Label:

В коде присутствует объект класса Localization (сингелтон) который будет подробно описан в статье о начале разработке игры на LibGDX. Если коротко то данный класс локализации переводит строки из стандартного языка в требуемый, или возвращает строки в зависимости от ключа.

 🙂 Продолжение следует…

P.S. Надеюсь наши статьи вам пригодятся! Всем спасибо!

label, , ,

Добавить комментарий