Difference between revisions of "Tutorial:Callback Functions (Українська)"
(Created page with "Функції зворотного виклику в LÖVE викликаються функцією love.run для виконання різни...") |
(changed links to use Ukrainian pages OR Template:translated link (to ensure they switch to Ukrainian links as soon as the links are available)) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | Функції [[:Category:Callbacks|зворотного виклику]] в LÖVE викликаються функцією [[love.run]] для виконання різних задач, і всі вони необов'язкові. Однак для створення повного занурення в гру вам, напевне, доведеться використати більшу їх частину, тому важно значить, які функції доступні. | + | Функції [[:Category:Callbacks|зворотного виклику]] в LÖVE викликаються функцією [[love.run (Українська)|love.run]] для виконання різних задач, і всі вони необов'язкові. Однак для створення повного занурення в гру вам, напевне, доведеться використати більшу їх частину, тому важно значить, які функції доступні. |
− | Для тих, хто починає програмувати чи не знаю цього терміну: функція зворотного виклику — це функція навпаки. Звичайна ви викликаєте функцію, наприклад | + | Для тих, хто починає програмувати чи не знаю цього терміну: функція зворотного виклику — це функція навпаки. Звичайна ви викликаєте функцію, наприклад {{translated link|love.graphics.draw|Українська|no marker=1}} чи math.floor, щоб LÖVE чи Lua щось зробили. А функції зворотного виклику — це функції, які пишете ви самі, а LÖVE іноді їх викликає. Це дозволяє організувати та оптимізувати код. Наприклад, love.load викликається тільки тоді, коли гра запускається (перед будь-якою іншою функцією зворотного виклику), тому в ній можна написати код, який завантажуватиме ігрові ресурси та підготує ігрові об'єкти. |
− | ==[[love.load]]== | + | ==[[love.load (Українська)|love.load]]== |
<source lang="lua"> | <source lang="lua"> | ||
function love.load() | function love.load() | ||
Line 15: | Line 15: | ||
Ця функція викликається тільки один раз, коли гра запускається, і звичайно в ній пишуть код для завантаження ресурсів, ініціалізації змінних та встановлення налаштувань. Все це можна робити і в інших функціях, але ця функція виконується тільки один раз — тому вона не буде потребувати багато системних ресурсів. | Ця функція викликається тільки один раз, коли гра запускається, і звичайно в ній пишуть код для завантаження ресурсів, ініціалізації змінних та встановлення налаштувань. Все це можна робити і в інших функціях, але ця функція виконується тільки один раз — тому вона не буде потребувати багато системних ресурсів. | ||
− | ==[[love.update]]== | + | ==[[love.update (Українська)|love.update]]== |
<source lang="lua"> | <source lang="lua"> | ||
function love.update(dt) | function love.update(dt) | ||
Line 23: | Line 23: | ||
end | end | ||
</source> | </source> | ||
− | Ця функція викликається весь час. Скоріше за все, більшість ваших розрахунків буде в ній. 'dt' значить "[[love.timer.getDelta|дельта-час (delta time)]]" — це кількість секунд, які пройшли після попереднього виклику цієї функції (звичайно це мале число, наприклад, 0.025714). | + | Ця функція викликається весь час. Скоріше за все, більшість ваших розрахунків буде в ній. 'dt' значить "[[love.timer.getDelta (Українська)|дельта-час (delta time)]]" — це кількість секунд, які пройшли після попереднього виклику цієї функції (звичайно це мале число, наприклад, 0.025714). |
− | == | + | =={{translated link|love.draw|Українська|no marker=1}}== |
<source lang="lua"> | <source lang="lua"> | ||
function love.draw() | function love.draw() | ||
Line 32: | Line 32: | ||
end | end | ||
</source> | </source> | ||
− | <code> | + | <code>{{translated link|love.draw|Українська|no marker=1}}</code> — це місце, де виконується код малювання (це можна зрозуміти з назви: draw значить ''намалювати''). Всі функції з <code>{{translated link|love.graphics.draw|Українська|no marker=1}}</code> мають виконуватися тільки тут — якщо викликати їх в іншому місці, нічого не намалюється. Ця функція також викликається постійно, тому майте на увазі: якщо змінити шрифт/колір/режим/і т.і. в кінці цієї функції, це повпливає на код і на початку. Наприклад: |
<source lang="lua"> | <source lang="lua"> | ||
function love.load() | function love.load() | ||
Line 45: | Line 45: | ||
</source> | </source> | ||
− | == | + | =={{translated link|love.mousepressed|Українська|no marker=1}}== |
− | {{newin|[[0.10.0]]|100|type=variant}} | + | {{newin (Українська)|[[0.10.0]]|100|type=variant}} |
<source lang="lua"> | <source lang="lua"> | ||
function love.mousepressed(x, y, button, istouch) | function love.mousepressed(x, y, button, istouch) | ||
Line 55: | Line 55: | ||
end | end | ||
</source> | </source> | ||
− | Ця функція викликається тоді, коли натиснуто на клавішу миші, і їй передається натиснута кнопка та координати місця, де був курсор (x та y). Кнопка (button) — це номер кнопки, і доступні всі кнопки, що є на миші. Цю функцію зручно використовувати разом з <code> | + | Ця функція викликається тоді, коли натиснуто на клавішу миші, і їй передається натиснута кнопка та координати місця, де був курсор (x та y). Кнопка (button) — це номер кнопки, і доступні всі кнопки, що є на миші. Цю функцію зручно використовувати разом з <code>{{translated link|love.mousereleased|Українська|no marker=1}}</code> (функцією відпускання миші). |
− | == | + | =={{translated link|love.mousereleased|Українська|no marker=1}}== |
− | {{newin|[[0.10.0]]|100|type=variant}} | + | {{newin (Українська)|[[0.10.0]]|100|type=variant}} |
<source lang="lua"> | <source lang="lua"> | ||
function love.mousereleased(x, y, button, istouch) | function love.mousereleased(x, y, button, istouch) | ||
Line 66: | Line 66: | ||
end | end | ||
</source> | </source> | ||
− | Ця функція викликається тоді, коли закінчується натискання на кнопку миші, і вона отримує номер кнопки (button) і координати місця відпускання кнопки. Її можна використовувати і разом з <code> | + | Ця функція викликається тоді, коли закінчується натискання на кнопку миші, і вона отримує номер кнопки (button) і координати місця відпускання кнопки. Її можна використовувати і разом з <code>{{translated link|love.mousepressed|Українська|no marker=1}}</code> (функцією початку натискання), і окремо, вони працюють незалежно. |
− | == | + | =={{translated link|love.keypressed|Українська|no marker=1}}== |
<source lang="lua"> | <source lang="lua"> | ||
function love.keypressed(key) | function love.keypressed(key) | ||
Line 78: | Line 78: | ||
end | end | ||
</source> | </source> | ||
− | Ця функція викликається, коли натиснуто на будь-яку клавішу на клавіатурі, і їй передається натиснута клавіша. Клавіша може будь однією з [[KeyConstant|констант]]. Цю функцію зручно використовувати разом з <code> | + | Ця функція викликається, коли натиснуто на будь-яку клавішу на клавіатурі, і їй передається натиснута клавіша. Клавіша може будь однією з [[KeyConstant|констант]]. Цю функцію зручно використовувати разом з <code>{{translated link|love.keyreleased|Українська|no marker=1}}</code>. |
− | == | + | =={{translated link|love.keyreleased|Українська|no marker=1}}== |
<source lang="lua"> | <source lang="lua"> | ||
function love.keyreleased(key) | function love.keyreleased(key) | ||
Line 90: | Line 90: | ||
end | end | ||
</source> | </source> | ||
− | Ця функція викликається, коли будь яку клавішу на клавіатурі відпущено, і їй передається клавіша (key), яка була відпущена. Цю функцію можна використовувати і разом з <code> | + | Ця функція викликається, коли будь яку клавішу на клавіатурі відпущено, і їй передається клавіша (key), яка була відпущена. Цю функцію можна використовувати і разом з <code>{{translated link|love.keypressed|Українська|no marker=1}}</code>, і окремо, вони працюють незалежно. |
− | == | + | =={{translated link|love.focus|Українська|no marker=1}}== |
<source lang="lua"> | <source lang="lua"> | ||
function love.focus(f) | function love.focus(f) | ||
if not f then | if not f then | ||
− | print("ФОКУС | + | print("ФОКУС ВТРАЧЕНО") |
else | else | ||
print("ФОКУС ОТРИМАНО") | print("ФОКУС ОТРИМАНО") | ||
Line 116: | Line 116: | ||
</source> | </source> | ||
− | == | + | =={{translated link|love.quit|Українська|no marker=1}}== |
<source lang="lua"> | <source lang="lua"> | ||
function love.quit() | function love.quit() | ||
− | print(" | + | print("Дякую за гру! Повертайтеся!") |
end | end | ||
</source> | </source> | ||
Line 128: | Line 128: | ||
{{#set:LOVE Version=0.6.0}} | {{#set:LOVE Version=0.6.0}} | ||
{{#set:Description=Функції зворотного виклику}} | {{#set:Description=Функції зворотного виклику}} | ||
+ | |||
== Іншими мовами == | == Іншими мовами == | ||
{{i18n|Tutorial:Callback Functions}} | {{i18n|Tutorial:Callback Functions}} |
Latest revision as of 09:45, 31 January 2020
Функції зворотного виклику в 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