Difference between revisions of "love.run (日本語)"
(New translation (Based revision : 05:50, 17 December 2015)) |
m (Sync to latest revision.) |
||
Line 10: | Line 10: | ||
ありません。 | ありません。 | ||
== 用例 == | == 用例 == | ||
− | === なにも用意していないときに使用される [[0.10.0]] の標準関数。 === | + | === なにも用意していないときに使用される [[0.10.0]], [[0.10.1]], および [[0.10.2]] の標準関数。 === |
<source lang="lua"> | <source lang="lua"> | ||
function love.run() | function love.run() |
Revision as of 13:11, 3 November 2016
メイン・ループを包括するメイン関数。省略時は認識可能な物を標準使用します。
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
-- update へ渡すために、 dt を更新します。
if love.timer then
love.timer.step()
dt = love.timer.getDelta()
end
-- 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
-- update へ渡すために、 dt を更新します。
if love.timer then
love.timer.step()
dt = love.timer.getDelta()
end
-- 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
-- update へ渡すために、 dt を更新します。
if love.timer then
love.timer.step()
dt = love.timer.getDelta()
end
-- 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 and 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 の使用率を大幅に削減します (特に垂直同期が使用不可能の状態では)。
- 暫くの間、オペレーティングシステムに制御を返します。
詳細情報は 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