love.run (Français)

Fonction principale, contenant la boucle principale. Une fonction adapté avec précision est utilisé par défaut lorsqu'elle n'est pas redéfinie.

Fonction

Disponible depuis LÖVE 11.0
Ce-tte variant n'est pas supporté-e par des versions plus anciennes.

Synopsis

mainLoop = love.run ( )

Arguments

Aucun.

Retourne

function (Français) mainLoop
Fonction qui gère une image temporelle (frame), dont les événements et le rendu, lorsqu'elle est appelée.

Fonction

Supprimé depuis LÖVE 11.0
ce-tte variant n'est plus supporté dans cette version et les versions ultérieures.

Synopsis

love.run( )

Arguments

Aucun.

Retourne

Rien.

Exemples

Fonction par défaut pour 11.0, utilisée si vous ne fournissez pas la votre.

function love.run()
	if love.load then love.load(love.arg.parseGameArguments(arg), arg) end

	-- Nous ne voulons pas que le dt de la première image temporelle inclue le temps pris par love.load.
	if love.timer then love.timer.step() end

	local dt = 0

	-- Moment de la boucle principale.
	return function()
		-- Traite les événements.
		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

		-- Met à jour dt, comme nous allons le passer à update
		if love.timer then dt = love.timer.step() end

		-- appel update (mise à jour) et draw (trace)
		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

Fonction par défaut pour 0.10.0, 0.10.1, et 0.10.2, utilisé si vous ne fournissez pas la votre.

function love.run()

	if love.math then
		love.math.setRandomSeed(os.time())
	end

	if love.load then love.load(arg) end

	-- Nous ne voulons pas que le dt de la première image temporelle inclue le temps pris par love.load.
	if love.timer then love.timer.step() end

	local dt = 0

	-- Moment de la boucle principale.
	while true do
		-- Traite les événements.
		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

		-- Met à jour dt, comme nous allons le passer à update
		if love.timer then
			love.timer.step()
			dt = love.timer.getDelta()
		end

		-- Appelle update et 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

Fonction par défaut pour 0.9.0, 0.9.1, et 0.9.2, utilisée si vous ne fournissez pas la votre.

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

	-- Nous ne voulons pas que le dt de la première image temporelle inclue le temps pris par love.load.
	if love.timer then love.timer.step() end

	local dt = 0

	-- Moment de la boucle principale.
	while true do
		-- Traite les événements.
		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

		-- Met à jour dt, comme nous allons le passer à update
		if love.timer then
			love.timer.step()
			dt = love.timer.getDelta()
		end

		-- Appelle update et 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

Fonction par défaut pour 0.8.0, utilisée si vous ne fournissez pas la votre.

function love.run()

	math.randomseed(os.time())
	math.random() math.random()

	if love.load then love.load(arg) end

	local dt = 0

	-- Moment de la boucle principale.
	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

		-- Met à jour dt, comme nous allons le passer à update
		if love.timer then
			love.timer.step()
			dt = love.timer.getDelta()
		end

		-- Appelle update et 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

Fonction par défaut pour 0.7.0, 0.7.1 et 0.7.2, utilisée si vous ne fournissez pas la votre.

function love.run()

	if love.load then love.load(arg) end

	local dt = 0

	-- Moment de la boucle principale.
	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

		-- Traite les événements.
		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

Notes

Pourquoi y a-t-il un délais ?

if love.timer then love.timer.sleep(0.001) end

Il effectue quelques tâches importantes :

  • Limite les FPS à 1000 si vsync n'est pas activé.
  • Réduit massivement l'utilisation CPU dans de nombreuses situations (en particulier avec vsync désactivé.)
  • Laisse un peu de contrôle au système d'exploitation pour un court moment.

Pour d'avantage d'information, voir https://love2d.org/forums/viewtopic.php?f=4&t=76998.

Voir également


Autres langues