Tutorial:Callback Functions (Українська)
Функції зворотного виклику в LÖVE викликаються функцією love.run для виконання різних задач, і всі вони необов'язкові. Однак для створення повного занурення в гру вам, напевне, доведеться використати більшу їх частину, тому важно значить, які функції доступні.
Для тих, хто починає програмувати чи не знаю цього терміну: функція зворотного виклику — це функція навпаки. Звичайна ви викликаєте функцію, наприклад love.graphics.draw чи math.floor, щоб LÖVE чи Lua щось зробили. А функції зворотного виклику — це функції, які пишете ви самі, а LÖVE іноді їх викликає. Це дозволяє організувати та оптимізувати код. Наприклад, love.load викликається тільки тоді, коли гра запускається (перед будь-якою іншою функцією зворотного виклику), тому в ній можна написати код, який завантажуватиме ігрові ресурси та підготує ігрові об'єкти.
Contents
love.load
function love.load()
image = love.graphics.newImage("cake.jpg")
love.graphics.setNewFont(12)
love.graphics.setColor(0,0,0)
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' значить "дельта-час (delta time)" — це кількість секунд, які пройшли після попереднього виклику цієї функції (звичайно це мале число, наприклад, 0.025714).
love.draw
function love.draw()
love.graphics.draw(image, imgx, imgy)
love.graphics.print("Click and drag the cake around or use the arrow keys", 10, 10)
end
love.draw
— це місце, де виконується код малювання (це можна зрозуміти з назви: 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
Доступне починаючи з LÖVE 0.10.0 |
Цей варіант недоступний в попередніх версіях. |
function love.mousepressed(x, y, button, istouch)
if button == 1 then
imgx = x -- пересунути зображення до місця, де натиснуто мишкою
imgy = y
end
end
Ця функція викликається тоді, коли натиснуто на клавішу миші, і їй передається натиснута кнопка та координати місця, де був курсор (x та y). Кнопка (button) — це номер кнопки, і доступні всі кнопки, що є на миші. Цю функцію зручно використовувати разом з love.mousereleased
(функцією відпускання миші).
love.mousereleased
Доступне починаючи з LÖVE 0.10.0 |
Цей варіант недоступний в попередніх версіях. |
function love.mousereleased(x, y, button, istouch)
if button == 1 then
fireSlingshot(x,y) -- код цією чудової функції записаний десь в іншому місці
end
end
Ця функція викликається тоді, коли закінчується натискання на кнопку миші, і вона отримує номер кнопки (button) і координати місця відпускання кнопки. Її можна використовувати і разом з love.mousepressed
(функцією початку натискання), і окремо, вони працюють незалежно.
love.keypressed
function love.keypressed(key)
if key == 'b' then
text = "Натиснуто на клавішу B (И)."
elseif key == 'a' then
a_down = true
end
end
Ця функція викликається, коли натиснуто на будь-яку клавішу на клавіатурі, і їй передається натиснута клавіша. Клавіша може будь однією з констант. Цю функцію зручно використовувати разом з love.keyreleased
.
love.keyreleased
function love.keyreleased(key)
if key == 'b' then
text = "Клавішу B (И) відпущено."
elseif key == 'a' then
a_down = false
end
end
Ця функція викликається, коли будь яку клавішу на клавіатурі відпущено, і їй передається клавіша (key), яка була відпущена. Цю функцію можна використовувати і разом з love.keypressed
, і окремо, вони працюють незалежно.
love.focus
function love.focus(f)
if not f then
print("ФОКУС ВТРАЧЕНО")
else
print("ФОКУС ОТРИМАНО")
end
end
Ця функція викликається, коли гравець чи гравчиня натискає на щось за межами вікна LÖVE. Наприклад, коли гру запущено в вікні, і гравчиня переходить до Інтернет-браузеру, в гра може отримати про це повідомлення і включити режим паузи.
function love.focus(f)
-- змінна gameIsPaused визначає, чи зараз активна пауза
gameIsPaused = not f
end
function love.update(dt)
if gameIsPaused then return end
-- Тут буде інший код для love.update
end
love.quit
function love.quit()
print("Дякую за гру! Повертайтеся!")
end
Ця функція викликається тоді, коли гравець чи гравчиня натисне на кнопку закриття вікна (часто на ній намальований хрестик). Наприклад, якщо гравець вирішую закінчити гру, це можна зробити кнопкою закриття. Тоді гра може зберегти зміни перед тим, як закритися.
Вище були перераховані основні функції зворотного виклику та пояснено, де вони використовуються.
Іншими мовами
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