CEGUI In Practice / CEGUI на практике: 6. A Game Console

Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Давайте взглянем на то, как их надо зарегистрировать.

proVIDec 06.06.12 в 12:53

0

Ниже приведена функция RegisterHandlers, если вы до этого читали внимательно, то она должна выглядеть знакомо.

proVIDec 06.06.12 в 12:55

0

// Хорошо теперь мы должны зарегистрировать обработчики. Выше мы говорили, нам нужно знать, когда пользователь нажал Enter, и

proVIDec 06.06.12 в 13:09

0

// когда он нажал кнопку "Отправить". Так что нам нужно зарегистрировать оба события.

proVIDec 06.06.12 в 13:10

0

// Сначала давайте зарегистрируем кнопку отправки. Имя нашей кнопки "ConsoleRoot/SendButton", но не забывайте, что мы добавили префикс

proVIDec 06.06.12 в 13:20

0

// ко всем окнам, которые загрузили. Нужно принять это к сведению.

proVIDec 06.06.12 в 13:21

0

// Если вспомните, наша кнопка была типа CEGUI::PushButton,

proVIDec 06.06.12 в 13:22

0

// и мы хотим знать о событии клика по ней (EventClicked).

proVIDec 06.06.12 в 13:22

0

// Какую функцию нужно вызвать, когда кнопка нажата? Помните, что все функции

proVIDec 06.06.12 в 13:24

0

// содержаться внутри (this) класса.

proVIDec 06.06.12 в 13:24

0

// Вызываем функцию Handle_SendButtonPressed, член класса GameConsoleWindow

proVIDec 06.06.12 в 13:25

0

// Используем (this) объект, в котором находимся

proVIDec 06.06.12 в 13:26

0

// Теперь для TextSubmitted мы зарегистрируем событие на поле ввода, на котором должен быть курсор мыши, когда

proVIDec 06.06.12 в 13:44

0

// пользователь нажмет Enter. Я не собираюсь вдаваться в подробности, потому что я думаю, что это будет слишком страшно читать, так что

proVIDec 06.06.12 в 13:47

0
+1

// лучше просто написать. Вот вызов функции.

proVIDec 06.06.12 в 13:48

0

Последняя строчка выглядит ужасно, но помните, что если вы подключите пространство имен CEGUI, вам не понадобятся все эти префиксы CEGUI:: в коде.

proVIDec 06.06.12 в 14:56

0

Как видите регистрировать события довольно легко.

proVIDec 06.06.12 в 14:58

0

Стоит сказать, что есть больше действий, на которые можно реагировать.

proVIDec 06.06.12 в 15:00

0

Для кнопки можно также зарегистрировать:

proVIDec 06.06.12 в 15:00

0

Зависит от того, какой результат вы хотите получить, и где именно должно отразится действие.

proVIDec 06.06.12 в 15:01

0

Например, оконные элементы обычно реагируют на отпускание мыши, так как пользователь может кликнуть на объект, а потом передумать и отпустить кнопку мыши, предварительно стащив с элемента.

proVIDec 06.06.12 в 15:02

0

Обработчики

proVIDec 06.06.12 в 12:55

0

Теперь, когда мы зарегистрировали события, нам нужно написать функции, которые будут обрабатывать эти события.

proVIDec 06.06.12 в 15:03

0

Нам нужно обработать оба события: TextSubmitted и SendButton.

proVIDec 06.06.12 в 15:03

0

// Следующая строка кода в конкретном примере не нужна, но показать стоит. По сути EventArgs

proVIDec 06.06.12 в 18:02

0

// имеет ограниченное применение. Будет более полезно использовать его с другим типом событий. В данном случае WindowEventArgs

proVIDec 06.06.12 в 18:09

0

// Теперь нам нужно получить текст, который находится в поле ввода.

proVIDec 06.06.12 в 17:01

0

// Когда у нас уже есть строка, нужно послать ее в TextParser

proVIDec 06.06.12 в 18:11

0

// Сейчас, когда мы закончили с текстом, нам нужно позаботится об очистке поля ввода. Это то, чего мы ожидаем

proVIDec 06.06.12 в 18:12

0

// после нажатия Enter

proVIDec 06.06.12 в 18:12

0

Теперь вы должно быть удивлены, почему мы не распарсили текст прямо здесь?

proVIDec 06.06.12 в 18:13

0

Если пользователь нажмет Enter или кнопку отправки, текст в любом случае будет распарсен одинаково.

proVIDec 06.06.12 в 18:16

0

Так зачем писать одно и тоже дважды?

proVIDec 06.06.12 в 18:13

0

Ниже приведен код для обработки нажатия кнопки отправки.

proVIDec 06.06.12 в 18:17

0

Я знаю, только что говорил об одинаковых строках кода, и это выглядит просто поразительно также, как код для функции выше.

proVIDec 06.06.12 в 18:19

0

Но это потому что нам не нужна большая функциональность для кнопки.

proVIDec 06.06.12 в 18:19

0

Мы бы просто могли создать одну функцию для отправки текста, но что если бы мы захотели добавить звук, который бы звучал при нажатии на кнопку?

proVIDec 06.06.12 в 18:23

0

Тогда и нужны две различные функции.

proVIDec 06.06.12 в 18:24

0

Уже достаточно сказано, вот код.

proVIDec 06.06.12 в 18:24

0

Парсинг текста

proVIDec 06.06.12 в 18:20

0

Данная часть будет не о CEGUI, так как это больше техническая часть, касающаяся строк.

proVIDec 06.06.12 в 18:26

0

// Лично я люблю работать с std::string, так что я переконвертирую строку

proVIDec 06.06.12 в 18:27

0

// Убедимся, что строка не пустая

proVIDec 06.06.12 в 18:27

0

// Проверим, что первый символ - символ команды

proVIDec 06.06.12 в 18:27

0

// конвертируем символы команды в строчные

proVIDec 06.06.12 в 18:28

0

// Прикрепим наше "имя" к сообщению, которое отобразим

proVIDec 06.06.12 в 18:29

0
Минутку...

← Предыдущая страница

Следующая страница →