メインループを搭載したメイン関数です。省略時は実用性のあるデフォルト関数を使用します。
== 関数 ==
{{newin (日本語)|[[11.0 (日本語)|11.0]]|110|type=異形}}
=== 概要 ===
<source lang="lua">
mainLoop = love.run ( )
</source>
=== 引数 ===
なし。
=== 返値 ===
{{param (日本語)|function|mainLoop|イベントとレンダリングが呼び出された時に用いる１フレーム処理用関数。}}
== 関数 ==
{{oldin (日本語)|[[11.0 (日本語)|11.0]]|110|type=異形}}
=== 概要 ===
<source lang="lua">
love.run( )
</source>
=== 引数 ===
なし。
=== 返値 ===
ありません。
== 用例 ==
=== 未指定時の [[11.0 (日本語)|11.0]] 用のデフォルト関数です。===
<source lang="lua">
function love.run()
	if love.load then love.load(love.arg.parseGameArguments(arg), arg) end

	-- 最初のフレームの dt には love.load により取得された時間を算入しません。
	if love.timer then love.timer.step() end

	local dt = 0

	-- この区間はメインループです。
	return function()
		-- イベントの処理。
		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

		-- love.update へ渡すために、 dt (デルタタイム) を更新します。
		if love.timer then dt = love.timer.step() end

		-- love.update と love.draw を呼び出します。
		if love.update then love.update(dt) end -- love.timer が無効ならば 0 を渡します。

		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.0]], [[0.10.1 (日本語)|0.10.1]], および [[0.10.2 (日本語)|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

	-- 最初のフレームの dt には love.load により取得された時間を算入しません。
	if love.timer then love.timer.step() end

	local dt = 0

	-- この区間はメインループです。
	while true do
		-- イベントの処理。
		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

		-- love.update へ渡すために、 dt (デルタタイム) を更新します。
		if love.timer then
			love.timer.step()
			dt = love.timer.getDelta()
		end

		-- love.update と love.draw を呼び出します。
		if love.update then love.update(dt) end -- love.timer が無効ならば 0 を渡します。

		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.0]], [[0.9.1 (日本語)|0.9.1]], および [[0.9.2 (日本語)|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

	-- 最初のフレームの dt には love.load により取得された時間を算入しません。
	if love.timer then love.timer.step() end

	local dt = 0

	-- この区間はメインループです。
	while true do
		-- イベントの処理。
		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

		-- love.update へ渡すために、 dt (デルタタイム) を更新します。
		if love.timer then
			love.timer.step()
			dt = love.timer.getDelta()
		end

		-- love.update と love.draw を呼び出します。
		if love.update then love.update(dt) end -- love.timer が無効ならば 0 を渡します。

		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 (日本語)|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

	-- この区間はメインループです。
	while true do
		-- イベントの処理。
		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

		-- love.update へ渡すために、 dt (デルタタイム) を更新します。
		if love.timer then
			love.timer.step()
			dt = love.timer.getDelta()
		end

		-- love.update と love.draw を呼び出します。
		if love.update then love.update(dt) end -- love.timer が無効ならば 0 を渡します。
		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.0]], [[0.7.1 (日本語)|0.7.1]] および [[0.7.2 (日本語)|0.7.2]] 用のデフォルト関数です。===
<source lang="lua">
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 -- love.timer が無効ならば 0 を渡します。
		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
</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 delay in love.run() - LÖVE]を参照してください。
== 関連 ==
* [[parent::love (日本語)]]
[[Category:Callbacks (日本語)]]
{{#set:Description=メインループを搭載したメイン関数です。省略時は実用性のあるデフォルト関数を使用します。}}
{{#set:Subcategory=General (日本語)}}
{{#set:Since=000}}
== そのほかの言語 ==
{{i18n (日本語)|love.run}}