Готовый перевод CEGUI In Practice / CEGUI на практике: 5. Using .layout files
В этой главе мы поговорим об использовании .layout файлов.
Это то, что необходимо масштабному проекту, в котором команда дизайнеров не собирается терпеть перекомпилирование исходников каждый раз, как они что-то изменили.
Знакомьтесь, разметка
Файл разметки (.layout) имеет формат xml файла.
Существует по крайней мере два редактора для него.
Первый - CEGUI LayoutEditor. Это достаточно развитый редактор.
К сожалению, он устарел и на данный момент обновлений не планируется.
Есть новый редактор (CEGUI Layout Editor 2), который доступен на SVN.
Для того чтобы получить пользу от данного урока, мы не будем использовать специальные утилиты, а будем изменять .layout файл с помощью текстового редактора.
Первое на что стоит обратить внимание, то что это xml файл.
Так что нужно следовать стандартам XML.
Второе, то что иерархия файла такая же, как и у CEGUI.
Мы будем работать над созданием простой консоли.
Я создал разметку консоли, это и будет темой этого туториала, создать чат, по типу таких, которые вы найдете в любой MMORPG.
Вот, что мы сделаем сегодня:
Прилагаю разметку:
Ладно, я признаюсь,
я сжульничал и использовал LayoutEditor.
Но мне можно, так или иначе я знаю что делаю, так что не упрекайте меня и делайте свое домашнее задание.
Эм. В любом случае, давайте посмотрим на то, как устроен .layout файл.
Первая строчка, просто описание формата XML, которое для нас не важно.
Следующая строка является началом .layout файла.
Следующая:
Вот где начинаются интересные вещи.
Как вы можете видеть мы создаем окно типа "TaharezLook/FrameWindow" с именем "ConsoleRoot".
Следующие строки:
изменяют различные параметры всего окна.
Они устанавливают шрифт, заголовок и область окна.
Это также могло быть сделано в коде:
Как вы можете видеть, скрипты очень полезная вещь, позволяющая изменять различные параметры вне кода. Это увеличивает работоспособность дизайнеров.
А следующие строчки уже на подходе:
Эти строчки встречаются еще до тега <Window/>, который закрывает ConsoleRoot, так что когда скрипт загрузится в CEGUI, EditBox будет сделан ребенком ConsoleRoot.
А вы можете сказать какого типа будет это окно?
Это будет окно ввода.
Это часть консоли, куда пользователь будет писать то, что он хочет сказать.
Я не буду углубляться в детали оставшихся окон, так как они очень схожи с двумя предыдущими.
И все же. "ConsoleRoot/SendButton" будет кнопкой отправки сообщения, а "ConsoleRoot/ChatBox" будет полем, где сообщения будут отображаться.
[Примечание: Как вы можете видеть я следую схеме именования Родитель/Потомок.
Это НЕ обязательно, но я думаю, это помогает читать код во время отладки.
Было бы неудобно назвать окно EditBox, так как это довольно распространенное имя, которое может вызвать конфликт с другими окнами вашего приложения, которые вы создадите позже.]
Применение наших знаний
Теперь, когда мы немного узнали о .layout файлах, нам нужно понять, как применить эти знания.
Как распознать файл разметки в CEGUI.
Этот код загружает разметку в новое окно.
Отлично объяснил.
Есть кое-что, о чем стоит упомянуть. Вы можете добавлять префикс к именам .layout файлов.
Это будет полезным, если вы собираетесь добавлять один и тот же .layout файл несколько раз, так как после вторичной загрузки произойдет конфликт имен.
Давайте изменим предыдущий пример. Как-то так:
Теперь к именам окон добавится "_second" (т.е. "second_ConsoleRoot").
Это предотвратит ошибки с именами.
И если теперь мы запустим все это, увидим ли мы окно?
Неа. Мы же не привязали его к общей структуре окон.
Примечание: Подразумевается, что у вас уже настроен GUISheet, в противном случае произойдет ошибка.
Заключение
Мы увидели, как загружать .layout файлы.
Теперь мы знаем, как запускать систему под Ogre, создавать окна и понимаем параметры объектов, ввод, события и умеем загружать .layout файлы.
В следующей главе мы применим эти знания, чтобы создать консоль, которая действительно делает что-то.
До встречи.
Вот список параметров окон, он поможет в создании .layout файлов: <i>ссылка</i>.
Внимание! Этот перевод, возможно, ещё не готов.
Его статус: перевод редактируется
Переведено на Нотабеноиде
http://notabenoid.org/book/29927/102394
Переводчики: proVIDec
Настройки
Готово:
