love.run
Основная функция, содержащая основной цикл. Используется разумное значение по умолчанию, если оно не указано.
Функция
Доступно начиная с LÖVE 11.0
Этот вариант не поддерживается в более ранних версиях.
Описание
mainLoop = love.run ( )
Аргументы
Нет.
Возвращаемое значение
function mainLoop- Функция, которая обрабатывает один кадр, включая события и отрисовку, при вызове.
Функция
Удалино в LÖVE 11.0
Этот вариант не поддерживается в этой и более поздних версиях.
Описание
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 -- Main loop time. while true do if love.timer then love.timer.step() dt = love.timer.getDelta() end 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 -- Process events. 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
Примечания
Почему есть задержка?
if love.timer then love.timer.sleep(0.001) end
Она выполняет несколько полезных действий:
- Ограничивает FPS до 1000, если vsync не включен.
- Значительно снижает использование ЦП во многих ситуациях (особенно при отключенном vsync).
- Возвращает управление операционной системе на некоторое время.
Для получения дополнительной информации см. https://love2d.org/forums/viewtopic.php?f=4&t=76998.
См. также
© 2006–2020 LÖVE Development Team
Licensed under the GNU Free Documentation License, Version 1.3.
https://love2d.org/wiki/love.run