Difference between revisions of "Tutorial:Callback Functions (Українська)"

m
(changed links to use Ukrainian pages OR Template:translated link (to ensure they switch to Ukrainian links as soon as the links are available))
 
(2 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]] для виконання різних задач, і всі вони необов'язкові. Однак для створення повного занурення в гру вам, напевне, доведеться використати більшу їх частину, тому важно значить, які функції доступні.
  
Для тих, хто починає програмувати чи не знаю цього терміну: функція зворотного виклику — це функція навпаки. Звичайна ви викликаєте функцію, наприклад [[love.graphics.draw]] чи math.floor, щоб LÖVE чи Lua щось зробили. А функції зворотного виклику — це функції, які пишете ви самі, а LÖVE іноді їх викликає. Це дозволяє організувати та оптимізувати код. Наприклад, love.load викликається тільки тоді, коли гра запускається (перед будь-якою іншою функцією зворотного виклику), тому в ній можна написати код, який завантажуватиме ігрові ресурси та підготує ігрові об'єкти.
+
Для тих, хто починає програмувати чи не знаю цього терміну: функція зворотного виклику — це функція навпаки. Звичайна ви викликаєте функцію, наприклад {{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).  
  
==[[love.draw]]==
+
=={{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>[[love.draw]]</code> — це місце, де виконується код малювання (це можна зрозуміти з назви: draw значить ''намалювати''). Всі функції з <code>[[love.graphics.draw]]</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>
  
==[[love.mousepressed]]==
+
=={{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">
Line 55: Line 55:
 
end
 
end
 
</source>
 
</source>
Ця функція викликається тоді, коли натиснуто на клавішу миші, і їй передається натиснута кнопка та координати місця, де був курсор (x та y). Кнопка (button) — це номер кнопки, і доступні всі кнопки, що є на миші. Цю функцію зручно використовувати разом з <code>[[love.mousereleased]]</code> (функцією відпускання миші).
+
Ця функція викликається тоді, коли натиснуто на клавішу миші, і їй передається натиснута кнопка та координати місця, де був курсор (x та y). Кнопка (button) — це номер кнопки, і доступні всі кнопки, що є на миші. Цю функцію зручно використовувати разом з <code>{{translated link|love.mousereleased|Українська|no marker=1}}</code> (функцією відпускання миші).
  
==[[love.mousereleased]]==
+
=={{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">
Line 66: Line 66:
 
end
 
end
 
</source>
 
</source>
Ця функція викликається тоді, коли закінчується натискання на кнопку миші, і вона отримує номер кнопки (button) і координати місця відпускання кнопки. Її можна використовувати і разом з <code>[[love.mousepressed]]</code> (функцією початку натискання), і окремо, вони працюють незалежно.
+
Ця функція викликається тоді, коли закінчується натискання на кнопку миші, і вона отримує номер кнопки (button) і координати місця відпускання кнопки. Її можна використовувати і разом з <code>{{translated link|love.mousepressed|Українська|no marker=1}}</code> (функцією початку натискання), і окремо, вони працюють незалежно.
  
==[[love.keypressed]]==
+
=={{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>[[love.keyreleased]]</code>.
+
Ця функція викликається, коли натиснуто на будь-яку клавішу на клавіатурі, і їй передається натиснута клавіша. Клавіша може будь однією з [[KeyConstant|констант]]. Цю функцію зручно використовувати разом з <code>{{translated link|love.keyreleased|Українська|no marker=1}}</code>.
  
==[[love.keyreleased]]==
+
=={{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>[[love.keypressed]]</code>, і окремо, вони працюють незалежно.  
+
Ця функція викликається, коли будь яку клавішу на клавіатурі відпущено, і їй передається клавіша (key), яка була відпущена. Цю функцію можна використовувати і разом з <code>{{translated link|love.keypressed|Українська|no marker=1}}</code>, і окремо, вони працюють незалежно.  
  
==[[love.focus]]==
+
=={{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>
  
==[[love.quit]]==
+
=={{translated link|love.quit|Українська|no marker=1}}==
 
<source lang="lua">
 
<source lang="lua">
 
function love.quit()
 
function love.quit()
   print("Thanks for playing! Come back soon!")
+
   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 викликається тільки тоді, коли гра запускається (перед будь-якою іншою функцією зворотного виклику), тому в ній можна написати код, який завантажуватиме ігрові ресурси та підготує ігрові об'єкти.

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

Ця функція викликається тоді, коли гравець чи гравчиня натисне на кнопку закриття вікна (часто на ній намальований хрестик). Наприклад, якщо гравець вирішую закінчити гру, це можна зробити кнопкою закриття. Тоді гра може зберегти зміни перед тим, як закритися.

Вище були перераховані основні функції зворотного виклику та пояснено, де вони використовуються.


Іншими мовами