Как написать аддон для ВоВ. API. XML. Фреймы и События.
|
Элементы XMLДля проектирования интерфейса вашего аддона, вам понадобятся стандартные элементы - окна, кнопки и т.п. Они могут быть определены в XML файле с помощью стандартных элементов. Список элементов можно найти здесь: XML По мере написания статей, буду переводить описание различных элементов на русский язык. Так же XML файлы могут содержать код на языке LUA, описывающий реакцию элементов интерфейса на те или иные события. См. ниже.
Для проектирования интерфейса через XML, можно воспользоваться простым текстовым редактором, а можно воспользоваться визуальным средством проектирования, как, например, Wow UI Designer: http://www.wowinterface.com/downloads/info4222 (tnx. antidote) Я, пока что, буду пользоваться редактором, чтобы лучше понять суть вопроса. APIWorld of Warcraft предоставляет гибкий интерфейс для взаимодействия с игровым клиентом. На самом деле, клиент ВоВ предоставляет 3 API, помимо стандартных функций LUA. Более подробно можно прочитать здесь: API По мере использования буду переводить API на русский язык для удобства пользователей. Если вы поможете мне в этом - будет замечательно. ФреймыФрейм является основополагающей частью любого аддона. Если он должен взаимодействовать или реагировать на то, что происходит в игре, а не просто выводить текст. Фрейм не обязательно является видимой панелью. Можно рассматривать его просто, как объект класса Frame. Среда World of Warcraft имеет определенную иериархию фреймов, с которой можно ознакомиться здесь: XML. Будем называть типы XML объектов - классами или xml классами, для удобства. Из иериархии XML элементов видно, что класс Frame является прародителем практически всех стандартных элементов интерфейса. Определить фрейм для вашего аддона можно двумя путями: Задать фрейм в XML:
В данном файле мы создали фрейм класса Frame с именем HelloWorldFrame. В дальнейших примерах, я буду опускать спецификацию XML файла (родительского объекта Ui), но не забывайте, что она нужна. Помимо определения элементов интерфейса в XML файлах, его можно создавать динамически с помощью API:
Этот код создает простейший фрейм класса Frame с именем FooAddonFrame и помещает ссылку на него в переменную frame. СобытияСоздание окошек с кнопочками, это только половина дела. Ведь надо, чтобы аддон выполнял какие-то функции, т.е. взаимодействовал с игровым клиентом. Для этого используется система событий.
Интерфейс World of Warcraft целиком построен на событиях: весь код, запускаемый в аддонах, запускается в ответ на то или иное событие. Выполнение кода должно быть закончено до того, как фрейм отрисовывается. Если обработка события занимает слишком много времени, или содержит бесконечный цикл, то клиент зависнет. По существу, события в World of Warcraft можно разделить на два типа - События виджетов и Игровые события. На самом деле, события виджетов, это те же игровые события, но их обработка заранее зарегистрирована для любого фрейма. Но, обо всём по порядку. Игровые событияБудем называть игровым событием то, что происходит внутри клиента World of Warcraft, будь то действия пользователя, или действия окружающего мира, например, использование заклинания. В ответ на каждое событие, ваш аддон может предпринимать то или иное действие. Для того, чтобы ваш аддон реагировал на игровое событие в World of Warcraft, вам нужно сделать несколько вещей:
Обработчик события может быть создан динамически с помощью LUA, как указано в последнем примере, а может быть задан в XML файле в разделе Scripts с помощью элемента OnEvent:
В качестве параметров в обработчик события подаются:
Все игровые события, кроме событий виджетов, обрабатываются хендлером OnEvent. Если ваш аддон обрабатывает несколько событий, вы должны сами сделать ветвление внутри обработчика, в зависимости от переменной event. Подробнее об этом в одном из следующих выпусков. Список игровых событий вы можете найти здесь: Список событий игрового клиента События виджетовСобытия виджетов, это игровые события, связанные со взаимодействием с интерфейсом, как, например, нажатие клавиши, наведение мыши и т.п. Основные отличия от остальных игровых событий следующие:
Список событий можно найти здесь: Список событий виджетов Продолжение: Как написать аддон для ВоВ. Сохранение настроек. Значения по умолчанию. Слэш команды. |

Данная статья является продолжением цикла статей об аддонах. Предыдущая часть: 