Difference between revisions of "love.run (日本語)"
m (Sync to latest revision.) |
m (Translation improved. (誤訳の修正など)) |
||
Line 1: | Line 1: | ||
− | + | メイン関数を包括しているメインループです。省略時は実用性なデフォルトの関数を使用します。 | |
+ | 通常、指定を行う必要ありません。もし、指定を行う場合は <code>love.run</code> を自作関数でオーバーライドしてください。 | ||
+ | |||
== 関数 == | == 関数 == | ||
=== 概要 === | === 概要 === | ||
Line 10: | Line 12: | ||
ありません。 | ありません。 | ||
== 用例 == | == 用例 == | ||
− | === | + | === 未指定時に使用される [[0.10.0 (日本語)|0.10.0]], [[0.10.1 (日本語)|0.10.1]], および [[0.10.2 (日本語)|0.10.2]] のデフォルトの関数です。 === |
<source lang="lua"> | <source lang="lua"> | ||
function love.run() | function love.run() | ||
Line 20: | Line 22: | ||
if love.load then love.load(arg) end | if love.load then love.load(arg) end | ||
− | -- 最初のフレームの dt へ love.load | + | -- 最初のフレームの dt へ love.load により取得された時間を算入しません。 |
if love.timer then love.timer.step() end | if love.timer then love.timer.step() end | ||
local dt = 0 | local dt = 0 | ||
− | -- | + | -- この区間はメインループです。 |
while true do | while true do | ||
-- プロセスのイベント。 | -- プロセスのイベント。 | ||
Line 40: | Line 42: | ||
end | end | ||
− | -- update へ渡すために、 dt を更新します。 | + | -- love.update へ渡すために、 dt (デルタタイム) を更新します。 |
if love.timer then | if love.timer then | ||
love.timer.step() | love.timer.step() | ||
Line 46: | Line 48: | ||
end | end | ||
− | -- update を呼び出して描画します。 | + | -- love.update を呼び出して描画します。 |
if love.update then love.update(dt) end -- 0 を渡された場合は love.timer は無効になります。 | if love.update then love.update(dt) end -- 0 を渡された場合は love.timer は無効になります。 | ||
Line 62: | Line 64: | ||
</source> | </source> | ||
− | === | + | === 未指定時に使用される [[0.9.0 (日本語)|0.9.0]], [[0.9.1 (日本語)|0.9.1]], および [[0.9.2 (日本語)|0.9.2]] の標準関数です。 === |
<source lang="lua"> | <source lang="lua"> | ||
function love.run() | function love.run() | ||
Line 77: | Line 79: | ||
if love.load then love.load(arg) end | if love.load then love.load(arg) end | ||
− | -- 最初のフレームの dt へ love.load | + | -- 最初のフレームの dt へ love.load により取得された時間は算入しません。 |
if love.timer then love.timer.step() end | if love.timer then love.timer.step() end | ||
local dt = 0 | local dt = 0 | ||
− | -- | + | -- この区間はメインループです。 |
while true do | while true do | ||
-- プロセスのイベント。 | -- プロセスのイベント。 | ||
Line 100: | Line 102: | ||
end | end | ||
− | -- update へ渡すために、 dt を更新します。 | + | -- love.update へ渡すために、 dt (デルタタイム) を更新します。 |
+ | |||
if love.timer then | if love.timer then | ||
love.timer.step() | love.timer.step() | ||
Line 106: | Line 109: | ||
end | end | ||
− | -- update を呼び出して描画します。 | + | -- love.update を呼び出して描画します。 |
if love.update then love.update(dt) end -- 0 を渡された場合は love.timer は無効になります。 | if love.update then love.update(dt) end -- 0 を渡された場合は love.timer は無効になります。 | ||
Line 122: | Line 125: | ||
</source> | </source> | ||
− | === | + | === 未指定時に使用される [[0.8.0 (日本語)|0.8.0]] の標準関数。=== |
<source lang="lua"> | <source lang="lua"> | ||
function love.run() | function love.run() | ||
Line 133: | Line 136: | ||
local dt = 0 | local dt = 0 | ||
− | -- | + | -- この区間はメインループです。 |
while true do | while true do | ||
-- プロセスのイベント。 | -- プロセスのイベント。 | ||
Line 151: | Line 154: | ||
end | end | ||
− | -- update へ渡すために、 dt を更新します。 | + | -- love.update へ渡すために、 dt (デルタタイム) を更新します。 |
if love.timer then | if love.timer then | ||
love.timer.step() | love.timer.step() | ||
Line 157: | Line 160: | ||
end | end | ||
− | -- update を呼び出して描画します。 | + | -- love.update を呼び出して描画します。 |
if love.update then love.update(dt) end -- 0 を渡された場合は love.timer は無効になります。 | if love.update then love.update(dt) end -- 0 を渡された場合は love.timer は無効になります。 | ||
if love.graphics then | if love.graphics then | ||
Line 171: | Line 174: | ||
</source> | </source> | ||
− | === | + | === 未指定時に使用される [[0.7.0 (日本語)|0.7.0]], [[0.7.1 (日本語)|0.7.1]] および [[0.7.2 (日本語)|0.7.2]] の標準関数です。=== |
<source lang="lua"> | <source lang="lua"> | ||
function love.run() | function love.run() | ||
Line 179: | Line 182: | ||
local dt = 0 | local dt = 0 | ||
− | -- | + | -- この区間はメインループです。 |
while true do | while true do | ||
if love.timer then | if love.timer then | ||
Line 220: | Line 223: | ||
それは少し便利です: | それは少し便利です: | ||
− | * | + | * 垂直同期が使用不可能の場合は FPS を 1000 に制限します。 |
− | * 多くの状況で CPU の使用率を大幅に削減します ( | + | * 多くの状況で CPU の使用率を大幅に削減します (垂直同期が使用できない場合は特に効果的です)。 |
− | * | + | * 暫くの間、オペレーティングシステムへ制御を返します。 |
− | 詳細情報は https://love2d.org/forums/viewtopic.php?f=4&t=76998 を参照してください。 | + | 詳細情報は [https://love2d.org/forums/viewtopic.php?f=4&t=76998 delay in love.run() - LÖVE]を参照してください。 |
+ | |||
== 関連 == | == 関連 == | ||
* [[parent::love (日本語)]] | * [[parent::love (日本語)]] | ||
[[Category:Callbacks]] | [[Category:Callbacks]] | ||
− | {{#set:Description= | + | {{#set:Description=メイン関数を包括しているメインループです。省略時は実用性なデフォルトの関数を使用します。}} |
{{#set:Subcategory=General}} | {{#set:Subcategory=General}} | ||
{{#set:Since=000}} | {{#set:Since=000}} | ||
== そのほかの言語 == | == そのほかの言語 == | ||
{{i18n|love.run}} | {{i18n|love.run}} |
Revision as of 05:46, 29 September 2017
メイン関数を包括しているメインループです。省略時は実用性なデフォルトの関数を使用します。
通常、指定を行う必要ありません。もし、指定を行う場合は love.run
を自作関数でオーバーライドしてください。
Contents
関数
概要
love.run( )
引数
なし。
返値
ありません。
用例
未指定時に使用される 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
-- 最初のフレームの 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 を呼び出して描画します。
if love.update then love.update(dt) end -- 0 を渡された場合は love.timer は無効になります。
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
-- 最初のフレームの 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 を呼び出して描画します。
if love.update then love.update(dt) end -- 0 を渡された場合は love.timer は無効になります。
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
-- この区間はメインループです。
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 を呼び出して描画します。
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.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
注釈
なぜディレイを使用するのですか?
if love.timer then love.timer.sleep(0.001) end
それは少し便利です:
- 垂直同期が使用不可能の場合は FPS を 1000 に制限します。
- 多くの状況で CPU の使用率を大幅に削減します (垂直同期が使用できない場合は特に効果的です)。
- 暫くの間、オペレーティングシステムへ制御を返します。
詳細情報は delay in love.run() - LÖVEを参照してください。
関連
そのほかの言語
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