EN | RU
< Назад | Начало | Далее > |
---|---|---|
01. Цвет фона | Самоучители | 03. Сферы |
В этом самоучителе мы задаём цвет фона на нажатие кнопок мыши.
Ориентировочное время выполнения: 5 минут.
Давайте отследим нажатия и отпускания кнопок мыши:
local mouse = main.application.mouse
mouse.pressedButtonsChanged:addCallback(
function()
print("Mouse buttons have been pressed or released")
print("Pressed buttons:", #mouse.pressedButtons)
end
)
Давайте взглянем на новый использованный нами API:
main.application.mouse
(экземпляр) позволяет получить текущие свойства мыши (пальца) вроде позиции, нажатых кнопок мыши и подписаться на их измененияmain.application.mouse.pressedButtons
(массив) содержит список нажатых кнопок мышиmain.application.mouse.pressedButtonsChanged
(экземплярcore::Reporter
) уведомляет о нажатии и отпускании кнопок мыши- для подписки на все уведомления мы используем метод
addCallback()
экземпляраcore.Reporter
:main.application.mouse.pressedButtonsChanged:addCallback( function() print("Mouse buttons have been pressed or released") end )
- для подписки на все уведомления мы используем метод
core
(пространство имён) содержит функциональность, используемую во всём приложенииcore.Reporter
(класс) реализует шаблон "Издатель-подписчик" для упрощения циркуляции сообщений между независимыми частями приложенияcore.Reporter:addCallback()
(метод) позволяет подписаться на все сообщения от конкретного экземпляраcore.Reporter
Замечания:
pressedButtonsChanged
является экземпляром, который мы слушаемaddCallback()
является методом экземпляраpressedButtonsChanged
pressedButtonsChanged
иaddCallback
разделены:
, т.к. это вызов методаfunction() ... end
является функцией обратного вызова (замыканием), исполняемым при получении каждого уведомления#
является оператором, возвращающим количество элементов массива
Взгляните на консоль отладки. Вы должны увидеть примерно такой вывод при нажатии кнопок мыши:
Mouse buttons have been pressed or released
Pressed buttons: 1
Mouse buttons have been pressed or released
Pressed buttons: 0
Mouse buttons have been pressed or released
Pressed buttons: 1
Mouse buttons have been pressed or released
Pressed buttons: 2
Mouse buttons have been pressed or released
Pressed buttons: 1
Mouse buttons have been pressed or released
Pressed buttons: 0
Давайте устанавливать красный цвет фона, когда нажата хотя бы одна кнопка мыши,
и возвращать цвет фона к значению 0.2, 0.2, 0.4
, если ни одна из кнопок мыши
не нажата:
local DEFAULT_COLOR = {0.2, 0.2, 0.4}
local PRESSED_COLOR = {1.0, 0.0, 0.0}
local mouse = main.application.mouse
local camera = main.application.camera
mouse.pressedButtonsChanged:addCallback(
function()
if (#mouse.pressedButtons > 0)
then
camera.clearColor = PRESSED_COLOR
else
camera.clearColor = DEFAULT_COLOR
end
end
)
Теперь цвет фона красный при удеражинии кнопки (кнопок) мыши.
Вы успешно отследили нажатия кнопок мыши и переключили цвет фона.
< Назад | Начало | Далее > |
---|---|---|
01. Цвет фона | Самоучители | 03. Сферы |