Difference between revisions of "love.timer.getDelta (日本語)"

(New translation (Based revision : 25 March 2011, at 18:02))
 
m (Added ex)
Line 7: Line 7:
 
=== 引数 ===
 
=== 引数 ===
 
なし。
 
なし。
 +
 +
=== 用例 ===
 +
<source lang="Lua">
 +
-- 複数のタイマーを扱います。 [r] で タイマーA を、 [d] タイマーB をリセットします。
 +
-- これによりタイマーの基本動作を理解できるでしょう。
 +
-- もちろん、配列を使用すればタイマーを追加・操作できます。
 +
--
 +
-- 注釈
 +
-- 原則として love.timer.* は内部算術計算を行わないのでカウンタ用の変数がないと計測できません。
 +
-- love.timer.getDelta() は およそ 0.016 ~ 0.018 までのデルタタイムを出力します (環境依存)
 +
-- 得られた値の小数点以下が不要であれば math.floor(変数名) で四捨五入してください。
 +
--
 +
-- 違いとして love.timer.getDelta() は 2フレーム間/秒ですが love.timer.getTime() は
 +
-- 特定の秒数 (Windows の場合はタスクマネージャーのパフォーマンスタブで表示されている稼働時間) であることです。
 +
-- 使い分けの一例として getDelta は高速処理・長短時間・フレームレート依存のため厳密な精度を必要としない用途向け、
 +
-- getTime は通常処理・長時間・フレームレートに依存しない用途向けであると考えられます。
 +
-- (デルタタイムは、ディスクアクセスなどのI/O処理が集中したり、バックグラウンド動作になると精度が低下します)
 +
--
 +
-- love.update(dt) では 引数 dt (LOVE の内部処理ではローカル変数 dt です。詳しくは boot.lua を参照のこと) を
 +
-- 使ってデルタタイムを取得することはできますが、 dt だけでは複数のタイマーを非同期や任意起動で扱うときに
 +
-- 操作・管理が煩雑になるので、使い分けをお勧めします。なお、 dt = 0 にすることで love.update のタイマーを
 +
-- リセットすることができます。
 +
 +
local timerA = 0
 +
local timerB = 0
 +
 +
love.timer.step()
 +
 +
function love.draw()
 +
timerA = timerA + love.timer.getDelta()
 +
timerB = timerB + love.timer.getDelta()
 +
 +
 +
love.graphics.print(timerA,  0, 0)
 +
love.graphics.print(timerB,  0, 24)
 +
print(love.timer.getDelta()) -- lovec.exe を使用するとコンソールで値を確認できます。
 +
-- print(math.floor(love.timer.getTime()))
 +
 +
end
 +
 +
function love.keypressed(key)
 +
if key == 'r' then
 +
-- love.timer.step()
 +
timerA = 0
 +
end
 +
 +
if key == 'd' then
 +
-- love.timer.step()
 +
timerB = 0 -- タイマーのリセット
 +
end
 +
 +
 +
end
 +
</source>
 +
 
=== 返値 ===
 
=== 返値 ===
 
{{param|number|dt|経過時間 (秒単位)}}
 
{{param|number|dt|経過時間 (秒単位)}}

Revision as of 23:57, 31 August 2017

最近の2フレーム間における時間を返します。

関数

概要

dt = love.timer.getDelta( )

引数

なし。

用例

-- 複数のタイマーを扱います。 [r] で タイマーA を、 [d] タイマーB をリセットします。
-- これによりタイマーの基本動作を理解できるでしょう。
-- もちろん、配列を使用すればタイマーを追加・操作できます。
--
-- 注釈
-- 原則として love.timer.* は内部算術計算を行わないのでカウンタ用の変数がないと計測できません。
-- love.timer.getDelta() は およそ 0.016 ~ 0.018 までのデルタタイムを出力します (環境依存)
-- 得られた値の小数点以下が不要であれば math.floor(変数名) で四捨五入してください。
--
-- 違いとして love.timer.getDelta() は 2フレーム間/秒ですが love.timer.getTime() は
-- 特定の秒数 (Windows の場合はタスクマネージャーのパフォーマンスタブで表示されている稼働時間) であることです。
-- 使い分けの一例として getDelta は高速処理・長短時間・フレームレート依存のため厳密な精度を必要としない用途向け、
-- getTime は通常処理・長時間・フレームレートに依存しない用途向けであると考えられます。
-- (デルタタイムは、ディスクアクセスなどのI/O処理が集中したり、バックグラウンド動作になると精度が低下します)
--
-- love.update(dt) では 引数 dt (LOVE の内部処理ではローカル変数 dt です。詳しくは boot.lua を参照のこと) を
-- 使ってデルタタイムを取得することはできますが、 dt だけでは複数のタイマーを非同期や任意起動で扱うときに
-- 操作・管理が煩雑になるので、使い分けをお勧めします。なお、 dt = 0 にすることで love.update のタイマーを
-- リセットすることができます。

local timerA = 0
local timerB = 0

love.timer.step()

function love.draw()
	timerA = timerA + love.timer.getDelta()
	timerB = timerB + love.timer.getDelta()


	love.graphics.print(timerA,  0, 0)
	love.graphics.print(timerB,  0, 24)
	print(love.timer.getDelta())	-- lovec.exe を使用するとコンソールで値を確認できます。
--	print(math.floor(love.timer.getTime()))

end

function love.keypressed(key)
	if key == 'r' then
--		love.timer.step()
		timerA = 0
	end

	if key == 'd' then
--		love.timer.step()
		timerB = 0				-- タイマーのリセット
	end


end

返値

number dt
経過時間 (秒単位)

関連


そのほかの言語