Difference between revisions of "love.run (Русский)"
(Created page with 'Основная функция, содержащая главный цикл. Если упущена, то используется стандартная реализация …') |
|||
Line 1: | Line 1: | ||
Основная функция, содержащая главный цикл. Если упущена, то используется стандартная реализация этой функции. | Основная функция, содержащая главный цикл. Если упущена, то используется стандартная реализация этой функции. | ||
== Функция == | == Функция == | ||
+ | {{newin|[[11.0]]|110|type=variant}} | ||
+ | === Вид === | ||
+ | <source lang="lua"> | ||
+ | mainLoop = love.run ( ) | ||
+ | </source> | ||
+ | === Аргументы === | ||
+ | Нет. | ||
+ | === Возвращает === | ||
+ | {{param (Русский)|function|mainLoop|Функция, которая обрабатывает один кадр, включая события и отрисовку, когда вызывается.}} | ||
+ | == Функция == | ||
+ | {{oldin|[[11.0]]|110|type=variant}} | ||
=== Вид === | === Вид === | ||
<source lang="lua"> | <source lang="lua"> | ||
Line 10: | Line 21: | ||
Ничего. | Ничего. | ||
== Примеры == | == Примеры == | ||
− | === Стандартная функция для версии 0.7.0, используется, если вы не написали собственную. === | + | === Стандартная функция для версии [[11.0]], используется, если вы не написали собственную. === |
+ | <source lang="lua"> | ||
+ | function love.run() | ||
+ | if love.load then love.load(love.arg.parseGameArguments(arg), arg) end | ||
+ | |||
+ | -- We don't want the first frame's dt to include time taken by love.load. | ||
+ | if love.timer then love.timer.step() end | ||
+ | |||
+ | local dt = 0 | ||
+ | |||
+ | -- Main loop time. | ||
+ | return function() | ||
+ | -- Process events. | ||
+ | if love.event then | ||
+ | love.event.pump() | ||
+ | for name, a,b,c,d,e,f in love.event.poll() do | ||
+ | if name == "quit" then | ||
+ | if not love.quit or not love.quit() then | ||
+ | return a or 0 | ||
+ | end | ||
+ | end | ||
+ | love.handlers[name](a,b,c,d,e,f) | ||
+ | end | ||
+ | end | ||
+ | |||
+ | -- Update dt, as we'll be passing it to update | ||
+ | if love.timer then dt = love.timer.step() end | ||
+ | |||
+ | -- Call update and draw | ||
+ | if love.update then love.update(dt) end -- will pass 0 if love.timer is disabled | ||
+ | |||
+ | if love.graphics and love.graphics.isActive() then | ||
+ | love.graphics.origin() | ||
+ | love.graphics.clear(love.graphics.getBackgroundColor()) | ||
+ | |||
+ | if love.draw then love.draw() end | ||
+ | |||
+ | love.graphics.present() | ||
+ | end | ||
+ | |||
+ | if love.timer then love.timer.sleep(0.001) end | ||
+ | end | ||
+ | end | ||
+ | </source> | ||
+ | |||
+ | === Стандартная функция для версий [[0.10.0]], [[0.10.1]], и [[0.10.2]], используется, если вы не написали собственную. === | ||
+ | <source lang="lua"> | ||
+ | function love.run() | ||
+ | |||
+ | if love.math then | ||
+ | love.math.setRandomSeed(os.time()) | ||
+ | end | ||
+ | |||
+ | if love.load then love.load(arg) end | ||
+ | |||
+ | -- We don't want the first frame's dt to include time taken by love.load. | ||
+ | if love.timer then love.timer.step() end | ||
+ | |||
+ | local dt = 0 | ||
+ | |||
+ | -- Main loop time. | ||
+ | while true do | ||
+ | -- Process events. | ||
+ | if love.event then | ||
+ | love.event.pump() | ||
+ | for name, a,b,c,d,e,f in love.event.poll() do | ||
+ | if name == "quit" then | ||
+ | if not love.quit or not love.quit() then | ||
+ | return a | ||
+ | end | ||
+ | end | ||
+ | love.handlers[name](a,b,c,d,e,f) | ||
+ | end | ||
+ | end | ||
+ | |||
+ | -- Update dt, as we'll be passing it to update | ||
+ | if love.timer then | ||
+ | love.timer.step() | ||
+ | dt = love.timer.getDelta() | ||
+ | end | ||
+ | |||
+ | -- Call update and draw | ||
+ | if love.update then love.update(dt) end -- will pass 0 if love.timer is disabled | ||
+ | |||
+ | if love.graphics and love.graphics.isActive() then | ||
+ | love.graphics.clear(love.graphics.getBackgroundColor()) | ||
+ | love.graphics.origin() | ||
+ | if love.draw then love.draw() end | ||
+ | love.graphics.present() | ||
+ | end | ||
+ | |||
+ | if love.timer then love.timer.sleep(0.001) end | ||
+ | end | ||
+ | |||
+ | end | ||
+ | </source> | ||
+ | |||
+ | === Стандартная функция для версий [[0.9.0]], [[0.9.1]], и [[0.9.2]], используется, если вы не написали собственную. === | ||
+ | <source lang="lua"> | ||
+ | function love.run() | ||
+ | |||
+ | if love.math then | ||
+ | love.math.setRandomSeed(os.time()) | ||
+ | for i=1,3 do love.math.random() end | ||
+ | end | ||
+ | |||
+ | if love.event then | ||
+ | love.event.pump() | ||
+ | end | ||
+ | |||
+ | if love.load then love.load(arg) end | ||
+ | |||
+ | -- We don't want the first frame's dt to include time taken by love.load. | ||
+ | if love.timer then love.timer.step() end | ||
+ | |||
+ | local dt = 0 | ||
+ | |||
+ | -- Main loop time. | ||
+ | while true do | ||
+ | -- Process events. | ||
+ | if love.event then | ||
+ | love.event.pump() | ||
+ | for e,a,b,c,d in love.event.poll() do | ||
+ | if e == "quit" then | ||
+ | if not love.quit or not love.quit() then | ||
+ | if love.audio then | ||
+ | love.audio.stop() | ||
+ | end | ||
+ | return | ||
+ | end | ||
+ | end | ||
+ | love.handlers[e](a,b,c,d) | ||
+ | end | ||
+ | end | ||
+ | |||
+ | -- Update dt, as we'll be passing it to update | ||
+ | if love.timer then | ||
+ | love.timer.step() | ||
+ | dt = love.timer.getDelta() | ||
+ | end | ||
+ | |||
+ | -- Call update and draw | ||
+ | if love.update then love.update(dt) end -- will pass 0 if love.timer is disabled | ||
+ | |||
+ | if love.window and love.graphics and love.window.isCreated() then | ||
+ | love.graphics.clear() | ||
+ | love.graphics.origin() | ||
+ | if love.draw then love.draw() end | ||
+ | love.graphics.present() | ||
+ | end | ||
+ | |||
+ | if love.timer then love.timer.sleep(0.001) end | ||
+ | end | ||
+ | |||
+ | end | ||
+ | </source> | ||
+ | |||
+ | === Стандартная функция для версии [[0.8.0]], используется, если вы не написали собственную. === | ||
+ | <source lang="lua"> | ||
+ | function love.run() | ||
+ | |||
+ | math.randomseed(os.time()) | ||
+ | math.random() math.random() | ||
+ | |||
+ | if love.load then love.load(arg) end | ||
+ | |||
+ | local dt = 0 | ||
+ | |||
+ | -- Main loop time. | ||
+ | while true do | ||
+ | -- Process events. | ||
+ | if love.event then | ||
+ | love.event.pump() | ||
+ | for e,a,b,c,d in love.event.poll() do | ||
+ | if e == "quit" then | ||
+ | if not love.quit or not love.quit() then | ||
+ | if love.audio then | ||
+ | love.audio.stop() | ||
+ | end | ||
+ | return | ||
+ | end | ||
+ | end | ||
+ | love.handlers[e](a,b,c,d) | ||
+ | end | ||
+ | end | ||
+ | |||
+ | -- Update dt, as we'll be passing it to update | ||
+ | if love.timer then | ||
+ | love.timer.step() | ||
+ | dt = love.timer.getDelta() | ||
+ | end | ||
+ | |||
+ | -- Call update and draw | ||
+ | if love.update then love.update(dt) end -- will pass 0 if love.timer is disabled | ||
+ | if love.graphics then | ||
+ | love.graphics.clear() | ||
+ | if love.draw then love.draw() end | ||
+ | end | ||
+ | |||
+ | if love.timer then love.timer.sleep(0.001) end | ||
+ | if love.graphics then love.graphics.present() end | ||
+ | end | ||
+ | |||
+ | end | ||
+ | </source> | ||
+ | |||
+ | === Стандартная функция для версий [[0.7.0]], [[0.7.1]] и [[0.7.2]], используется, если вы не написали собственную. === | ||
<source lang="lua"> | <source lang="lua"> | ||
function love.run() | function love.run() | ||
Line 52: | Line 269: | ||
end | end | ||
</source> | </source> | ||
− | === Стандартная функция для версии 0.6.1, используется, если вы не написали собственную. === | + | |
+ | === Стандартная функция для версии [[0.6.1]], используется, если вы не написали собственную. === | ||
<source lang="lua"> | <source lang="lua"> | ||
function love.run() | function love.run() | ||
Line 92: | Line 310: | ||
end | end | ||
</source> | </source> | ||
− | === Стандартная функция для версии 0.6. | + | |
+ | === Стандартная функция для версии [[0.6.0]], используется, если вы не написали собственную. === | ||
<source lang="lua"> | <source lang="lua"> | ||
function love.run() | function love.run() | ||
Line 124: | Line 343: | ||
end | end | ||
</source> | </source> | ||
+ | |||
+ | == Заметки == | ||
+ | === Почему там задержка? === | ||
+ | <source lang="lua"> | ||
+ | if love.timer then love.timer.sleep(0.001) end | ||
+ | </source> | ||
+ | |||
+ | Это делает несколько полезных вещей: | ||
+ | * Ограничение FPS до 1000 если вертикальная синхронизация не включена. | ||
+ | * Уменьшает использование CPU во многих ситуациях (особенно с выключенной вертикальной синхронизацией). | ||
+ | * Возвращает управление ОС на немного. | ||
+ | Для подробной информации смотрите https://love2d.org/forums/viewtopic.php?f=4&t=76998. | ||
== Смотри также == | == Смотри также == | ||
− | * [[parent:: | + | * [[parent::love (Русский)]] |
[[Category:Callbacks]] | [[Category:Callbacks]] | ||
{{#set:Description=Основная функция, содержащая главный цикл.}} | {{#set:Description=Основная функция, содержащая главный цикл.}} | ||
+ | {{#set:Subcategory=General}} | ||
+ | {{#set:Since=000}} | ||
== Другие языки == | == Другие языки == | ||
{{i18n|love.run}} | {{i18n|love.run}} |
Latest revision as of 00:41, 13 June 2018
Основная функция, содержащая главный цикл. Если упущена, то используется стандартная реализация этой функции.
Contents
- 1 Функция
- 2 Функция
- 3 Примеры
- 3.1 Стандартная функция для версии 11.0, используется, если вы не написали собственную.
- 3.2 Стандартная функция для версий 0.10.0, 0.10.1, и 0.10.2, используется, если вы не написали собственную.
- 3.3 Стандартная функция для версий 0.9.0, 0.9.1, и 0.9.2, используется, если вы не написали собственную.
- 3.4 Стандартная функция для версии 0.8.0, используется, если вы не написали собственную.
- 3.5 Стандартная функция для версий 0.7.0, 0.7.1 и 0.7.2, используется, если вы не написали собственную.
- 3.6 Стандартная функция для версии 0.6.1, используется, если вы не написали собственную.
- 3.7 Стандартная функция для версии 0.6.0, используется, если вы не написали собственную.
- 4 Заметки
- 5 Смотри также
- 6 Другие языки
Функция
Available since LÖVE 11.0 |
This variant is not supported in earlier versions. |
Вид
mainLoop = love.run ( )
Аргументы
Нет.
Возвращает
function mainLoop
- Функция, которая обрабатывает один кадр, включая события и отрисовку, когда вызывается.
Функция
Removed in LÖVE 11.0 |
This variant is not supported in that and later versions. |
Вид
love.run( )
Аргументы
Нет.
Возвращает
Ничего.
Примеры
Стандартная функция для версии 11.0, используется, если вы не написали собственную.
function love.run()
if love.load then love.load(love.arg.parseGameArguments(arg), arg) end
-- We don't want the first frame's dt to include time taken by love.load.
if love.timer then love.timer.step() end
local dt = 0
-- Main loop time.
return function()
-- Process events.
if love.event then
love.event.pump()
for name, a,b,c,d,e,f in love.event.poll() do
if name == "quit" then
if not love.quit or not love.quit() then
return a or 0
end
end
love.handlers[name](a,b,c,d,e,f)
end
end
-- Update dt, as we'll be passing it to update
if love.timer then dt = love.timer.step() end
-- Call update and draw
if love.update then love.update(dt) end -- will pass 0 if love.timer is disabled
if love.graphics and love.graphics.isActive() then
love.graphics.origin()
love.graphics.clear(love.graphics.getBackgroundColor())
if love.draw then love.draw() end
love.graphics.present()
end
if love.timer then love.timer.sleep(0.001) end
end
end
Стандартная функция для версий 0.10.0, 0.10.1, и 0.10.2, используется, если вы не написали собственную.
function love.run()
if love.math then
love.math.setRandomSeed(os.time())
end
if love.load then love.load(arg) end
-- We don't want the first frame's dt to include time taken by love.load.
if love.timer then love.timer.step() end
local dt = 0
-- Main loop time.
while true do
-- Process events.
if love.event then
love.event.pump()
for name, a,b,c,d,e,f in love.event.poll() do
if name == "quit" then
if not love.quit or not love.quit() then
return a
end
end
love.handlers[name](a,b,c,d,e,f)
end
end
-- Update dt, as we'll be passing it to update
if love.timer then
love.timer.step()
dt = love.timer.getDelta()
end
-- Call update and draw
if love.update then love.update(dt) end -- will pass 0 if love.timer is disabled
if love.graphics and love.graphics.isActive() then
love.graphics.clear(love.graphics.getBackgroundColor())
love.graphics.origin()
if love.draw then love.draw() end
love.graphics.present()
end
if love.timer then love.timer.sleep(0.001) end
end
end
Стандартная функция для версий 0.9.0, 0.9.1, и 0.9.2, используется, если вы не написали собственную.
function love.run()
if love.math then
love.math.setRandomSeed(os.time())
for i=1,3 do love.math.random() end
end
if love.event then
love.event.pump()
end
if love.load then love.load(arg) end
-- We don't want the first frame's dt to include time taken by love.load.
if love.timer then love.timer.step() end
local dt = 0
-- Main loop time.
while true do
-- Process events.
if love.event then
love.event.pump()
for e,a,b,c,d in love.event.poll() do
if e == "quit" then
if not love.quit or not love.quit() then
if love.audio then
love.audio.stop()
end
return
end
end
love.handlers[e](a,b,c,d)
end
end
-- Update dt, as we'll be passing it to update
if love.timer then
love.timer.step()
dt = love.timer.getDelta()
end
-- Call update and draw
if love.update then love.update(dt) end -- will pass 0 if love.timer is disabled
if love.window and love.graphics and love.window.isCreated() then
love.graphics.clear()
love.graphics.origin()
if love.draw then love.draw() end
love.graphics.present()
end
if love.timer then love.timer.sleep(0.001) end
end
end
Стандартная функция для версии 0.8.0, используется, если вы не написали собственную.
function love.run()
math.randomseed(os.time())
math.random() math.random()
if love.load then love.load(arg) end
local dt = 0
-- Main loop time.
while true do
-- Process events.
if love.event then
love.event.pump()
for e,a,b,c,d in love.event.poll() do
if e == "quit" then
if not love.quit or not love.quit() then
if love.audio then
love.audio.stop()
end
return
end
end
love.handlers[e](a,b,c,d)
end
end
-- Update dt, as we'll be passing it to update
if love.timer then
love.timer.step()
dt = love.timer.getDelta()
end
-- Call update and draw
if love.update then love.update(dt) end -- will pass 0 if love.timer is disabled
if love.graphics then
love.graphics.clear()
if love.draw then love.draw() end
end
if love.timer then love.timer.sleep(0.001) end
if love.graphics then love.graphics.present() end
end
end
Стандартная функция для версий 0.7.0, 0.7.1 и 0.7.2, используется, если вы не написали собственную.
function love.run()
if love.load then love.load(arg) end
local dt = 0
-- Основной цикл.
while true do
if love.timer then
love.timer.step()
dt = love.timer.getDelta()
end
if love.update then love.update(dt) end -- вернет 0, если love.timer не включен
if love.graphics then
love.graphics.clear()
if love.draw then love.draw() end
end
-- Обработка событий.
if love.event then
for e,a,b,c in love.event.poll() do
if e == "q" then
if not love.quit or not love.quit() then
if love.audio then
love.audio.stop()
end
return
end
end
love.handlers[e](a,b,c)
end
end
if love.timer then love.timer.sleep(1) end
if love.graphics then love.graphics.present() end
end
end
Стандартная функция для версии 0.6.1, используется, если вы не написали собственную.
function love.run()
if love.load then love.load(arg) end
local dt = 0
-- Основной цикл.
while true do
if love.timer then
love.timer.step()
dt = love.timer.getDelta()
end
if love.update then love.update(dt) end -- вернет 0, если love.timer не включен
if love.graphics then
love.graphics.clear()
if love.draw then love.draw() end
end
-- Обработка событий.
if love.event then
for e,a,b,c in love.event.poll() do
if e == "q" then
if love.audio then
love.audio.stop()
end
return
end
love.handlers[e](a,b,c)
end
end
if love.timer then love.timer.sleep(1) end
if love.graphics then love.graphics.present() end
end
end
Стандартная функция для версии 0.6.0, используется, если вы не написали собственную.
function love.run()
if love.load then love.load() end
-- Основной цикл.
while true do
love.timer.step()
if love.update then love.update(love.timer.getDelta()) end
love.graphics.clear()
if love.draw then love.draw() end
-- Обработка событий.
for e,a,b,c in love.event.poll() do
if e == 'q' then
if love.audio then
love.audio.stop()
end
return
end
love.handlers[e](a,b,c)
end
love.timer.sleep(1)
love.graphics.present()
end
end
Заметки
Почему там задержка?
if love.timer then love.timer.sleep(0.001) end
Это делает несколько полезных вещей:
- Ограничение FPS до 1000 если вертикальная синхронизация не включена.
- Уменьшает использование CPU во многих ситуациях (особенно с выключенной вертикальной синхронизацией).
- Возвращает управление ОС на немного.
Для подробной информации смотрите https://love2d.org/forums/viewtopic.php?f=4&t=76998.
Смотри также
Другие языки
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