CEGUI In Practice / CEGUI на практике: 3. Managing input
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
И снова добро пожаловать! proVIDec 05.06.12 в 09:17 |
|
|
В этом туториале мы узнаем как взаимодействовать с CEGUI во время работы программы, ОЧЕНЬ полезная возможность для Графического Интерфейса Пользователя. proVIDec 05.06.12 в 09:52 |
||
|
CEGUI был сконструирован для работы с разными системами, использующих различные рендеры. proVIDec 05.06.12 в 09:53 |
||
|
Так что он не связан с какой-то конкретной системой ввода. proVIDec 05.06.12 в 09:54 |
||
|
К нашему сожалению, для демонстрации взаимодействия с CEGUI, нам нужно выбрать одну и использовать именно ее. proVIDec 05.06.12 в 09:56 |
||
|
Я решил выбрать OIS. proVIDec 05.06.12 в 09:54 |
||
|
Также я постараюсь затронуть специфические функции и структуры OIS, если мы будем их использовать. proVIDec 05.06.12 в 10:00 |
||
|
Обработка ввода proVIDec 05.06.12 в 10:00 |
||
|
Первое о чем следует упомянуть, что CEGUI позволяет легко обрабатывать ввод данных пользователем. proVIDec 05.06.12 в 10:03 |
||
|
Когда бы действие не случилось (пользователь нажал на клавишу или мышь), CEGUI должен быть проинформирован об этом. proVIDec 05.06.12 в 10:04 |
||
|
Функция InjectKey Down/Up удобна для обработки контроллеров, Shift, Enter и т.д. proVIDec 05.06.12 в 10:06 |
||
|
А функция injectChar сама объясняет зачем она нужна, она обрабатывает ввод символов. proVIDec 05.06.12 в 10:07 |
||
|
Обработка мыши работает так же, как и методы, приведенные выше. proVIDec 05.06.12 в 10:08 |
||
|
Код, приведенный ниже, показывает, как нужно информировать CEGUI о нажатии левой кнопки мыши. proVIDec 05.06.12 в 10:12 |
||
|
Как вы можете догадаться, есть функция injectMouseButtonUp(), которая информирует о том, когда кнопка была отпущена. proVIDec 05.06.12 в 10:14 |
||
|
А что, если мышь движется? proVIDec 05.06.12 в 10:14 |
||
|
Сейчас покажу: proVIDec 05.06.12 в 10:14 |
||
|
Delta - относительные координаты пикселей на экране, на которые мышь была сдвинута с прошлой проверки. proVIDec 05.06.12 в 10:16 |
||
|
До сих пор, мы не дали CEGUI никакого процессорного времени. proVIDec 05.06.12 в 10:18 |
||
|
Если мы хотим, чтобы мышь двигалась, а кнопки нажимались, нам нужно чтобы CEGUI отображало эти действия. proVIDec 05.06.12 в 10:18 |
||
|
Так что нужно сообщать ему, сколько времени прошлого с прошлого рендера. proVIDec 05.06.12 в 10:19 |
||
|
Функция позволяет внедрить временной пульс, основанный на количестве прошедших секунд. proVIDec 05.06.12 в 10:20 |
||
|
Как часто обновлять CEGUI - ваше дело, но большинство игр требуют обновлять GUI с помощью injectingTime каждую итерацию цикла обновления. proVIDec 05.06.12 в 10:22 |
||
|
Если вы создаете что-то большее, чем простую утилиту, то вам понадобятся постоянные обновления. proVIDec 05.06.12 в 10:51 |
+1 | |
|
На заметку proVIDec 05.06.12 в 10:38 |
||
|
Я буду считать, что вы использовали OIS и знаете о ее премудростях. proVIDec 05.06.12 в 10:39 |
||
|
Вот две функции, которые помогут вам взаимодействовать с CEGUI. proVIDec 05.06.12 в 10:24 |
||
|
Следующая будет обрабатывать ввод с клавиатуры. proVIDec 05.06.12 в 10:27 |
||
|
Она обрабатывает нажимание и отпускание клавиши (по их коду) и символы, которые соответствуют клавишам на клавиатуре. proVIDec 05.06.12 в 10:28 |
||
|
Эта функция будет обрабатывать ввод с мыши (нажатие и отпускание клавиш мыши). proVIDec 05.06.12 в 10:33 |
||
|
Функция конвертирует OIS данные о вводе с мыши в те, которые может понять CEGUI. proVIDec 05.06.12 в 10:35 |
||
|
Сейчас код не устаревший, но если он станет таковым, то послужит примером того, как использовать OIS вместе с CEGUI. proVIDec 05.06.12 в 10:45 |
||
|
Заключение proVIDec 05.06.12 в 09:17 |
||
|
Понятно, что эта глава немного короче чем предыдущие, proVIDec 05.06.12 в 10:36 |
||
|
но она дает полезную информацию о том, как взаимодействовать с CEGUI. proVIDec 05.06.12 в 10:36 |
||
|
В следующем туториале вы узнаете как делать интересные вещи с помощью ввода. proVIDec 05.06.12 в 10:38 |
||
|
До следующей встречи! proVIDec 05.06.12 в 09:17 |
