スリープ(一時停止)
love.timer.sleep
追加バージョン | 0.2.1 | 削除バージョン | - |
指定された秒数間、現在のスレッドのスリープ(一時停止)を行います。
local cnt = 0
function love.draw()
love.graphics.print(tostring(cnt), 20, 20)
end
function love.update(dt)
cnt = cnt + 1
end
function love.keypressed(key)
love.timer.sleep(1)
end
実行すると、増え続ける数値が表示されます。キーボードのキーを入力すると1秒間スリープ(一時停止)します。
sleepの動きの注意点
love.timer.sleepで指定した秒数間は描画処理は行われず、入力イベントもトリガーされません。以下のプログラムは、その挙動の確認用のプログラムです(※コンソール出力を使用します)。
cnt = 0
inputText = ""
function love.load()
love.keyboard.setTextInput(true)
end
function love.draw()
love.graphics.print(tostring(cnt), 20, 20)
love.graphics.print(inputText, 20, 40)
end
function love.update(dt)
cnt = cnt + 1
end
function love.mousepressed(x, y, button, istouch)
love.timer.sleep(1)
end
function love.keypressed(key)
print("call: keypressed")
end
function love.keyreleased(key)
print("call: keyreleased")
end
function love.textinput(text)
print("call: textinput")
inputText = inputText .. text
end
このプログラムは以下の動作を行います。
- keypressed, keyreleased, textinputが呼び出されるとコンソールに文字列を出力
- textinputで変数inputTextを更新(入力したキーの結合)
- mousepressedで1秒間のスリープ
スリープ中にキーボードのキーをいくつか入力してみてください。コンソールには何も出力されません。スリープ終了後にまとめて表示されます。また、スリープ中は入力した文字列の表示も更新されません。
このように、スリープ中は描画処理が行われない状態になります。メインスレッドで使用する場合は特に注意してください。