Tutorial:Callback Functions (Русский)
Функции обратного вызова в LÖVE используются движком для выполнения различных задач, и все они необязательны. Тем не менее, полнофункциональный игровой процесс, чаще всего, использует почти все, так что целесообразно узнать, какие есть, и что они делают.
Contents
love.load
function love.load()
image = love.graphics.newImage("cake.jpg")
local f = love.graphics.newFont(12)
love.graphics.setFont(f)
love.graphics.setColor(0,0,0,255)
love.graphics.setBackgroundColor(255,255,255)
end
Эта функция вызывается только один раз в начале игры, и, как правило, она используется для загрузки ресурсов, инициализации переменных и определения конкретных настроек. Всё это можно делать в других местах, но их выполнения в этой функции означает, что они выполнятся только один раз, экономя много системных ресурсов.
love.update
function love.update(dt)
if love.keyboard.isDown("up") then
num = num + 100 * dt -- это увеличивает num на 100 в секунду
end
end
Эта функция вызывается непрерывно, и, вероятно, будет находится там, где выполняется большинство ваших математических операциях. 'dt' обозначает "изменение (дельту) времени" и является количеством секунд, прошедших с последнего раза, как эта функция была вызвана (обычно малое значение, такое как 0,025714).
love.draw
function love.draw()
love.graphics.draw(image, imgx, imgy)
love.graphics.print("Чтобы переместить торт, щелкните по нему и передвигайте мышь или используйте клавиши со стрелками.", 10, 10)
end
В функции love.draw
происходит весь процесс отрисовки (если вы ещё не поняли), а если вы вызовете любую функцию love.graphics.draw
вне этой функции, то это не даст никакого результата. Эта функция также называется непрерывной, так что имейте в виду, что если вы измените шрифт/цвет/режим/и т.д. в конце функции, то она будет влиять на всё находящиеся в начале функции. Например:
function love.load()
love.graphics.setColor(0,0,0)
end
function love.draw()
love.graphics.print("Этот текст не чёрный из-за нижеследующей строки.", 100, 100)
love.graphics.setColor(255,0,0)
love.graphics.print("Этот текст красный.", 100, 200)
end
love.mousepressed
Available since LÖVE 0.10.0 |
This variant is not supported in earlier versions. |
function love.mousepressed(x, y, button, istouch)
if button == 1 then
imgx = x -- переместить изображение туда, где мышь нажата
imgy = y
end
end
Эта функция вызывается всякий раз, когда нажата кнопка мыши, и получает кнопки и координаты, где кнопки были нажаты. Кнопкой может быть любая из констант. Эта функция очень хорошо работает с функцией love.mousereleased
.
love.mousereleased
Available since LÖVE 0.10.0 |
This variant is not supported in earlier versions. |
function love.mousereleased(x, y, button, istouch)
if button == 1 then
fireSlingshot(x,y) -- это пользовательская функция определённая в другом месте
end
end
Эта функция вызывается всякий раз, когда отпущена кнопка мыши, и получает кнопки и координаты, где кнопки были отпущены. Вы можете использовать эту функцию совместно с функцией love.mousepressed
или отдельно, так как они никак не связаны.
love.keypressed
function love.keypressed(key, unicode)
if key == 'b' then
text = "Клавиша B была нажата."
elseif key == 'a' then
a_down = true
end
end
Эта функция вызывается всякий раз, когда нажата клавиша на клавиатуре, и получает кнопки, которые были нажаты. Кнопкой может быть любая из констант. Эта функция очень хорошо работает с функцией love.keyreleased
.
love.keyreleased
function love.keyreleased(key, unicode)
if key == 'b' then
text = "Клавиша B была отпущена."
elseif key == 'a' then
a_down = false
end
end
Эта функция вызывается всякий раз, когда отпущена клавиша на клавиатуре, и получает кнопки, которые были отпущены. Вы можете использовать эту функцию совместно с функцией love.keypressed
или отдельно, так как они никак не связаны.
love.focus
function love.focus(f)
if not f then
print("ФОКУС ПОТЕРЯН")
else
print("ФОКУС ПОЛУЧЕН")
end
end
Эта функция вызывается всякий раз, когда пользователь щелкает по окну и вне окна LOVE. Например, если он играет в оконную игру и пользователь щелкает по своему интернет-браузеру, игра может быть уведомлена об этом и можно автоматически поставить игру на паузу..
love.quit
function love.quit()
print("Спасибо за игру! Возвращайтесь скорее!")
end
Эта функция вызывается всякий раз, когда пользователь нажимает кнопку закрытия окна (часто X или Q). Например, если пользователь закончил играть, он может нажать кнопку закрытия. Затем, перед закрытием, игра может сохранить свое состояние.
Таковы функции обратного вызова и их основные применения.
На других языках
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info