love.keyboard.isDown (日本語)
特定のキーが押されたかどうか検出します。 love.keypressed と love.keyreleased はコールバック関数です。この関数とは混同しないでください。
Contents
関数
概要
down = love.keyboard.isDown( key )
引数
KeyConstant key
- 検出するキー。
返値
boolean down
- true ならばキーは押されており、それ以外ならば false です。
関数
LÖVE 0.7.2 から使用可能 |
この異形は以前のバージョンでは非対応です。 |
概要
anyDown = love.keyboard.isDown( key, ... )
引数
KeyConstant key
- 検出するキー。
KeyConstant ...
- 続けて検出するキー。
返値
boolean anyDown
- true ならば用意された任意のキーは押されており、それ以外ならば false です。
注釈
- この関数はコールバック関数ではありませんのでオーバーライド(上書き)しないでください。
- Ctrl, Alt, Shift などの修飾キーを押しながら別のキーが押された場合 (ショートカットキー、またはコンビネーションキー) の判定は love.keypressed では大幅な判定遅延の発生、キーリピートが効かないなど正常に動作しません。必ず love.update 側で修飾キーの判定を行いフラグを立ててから love.keypressed で組み合わせ先のキーに対する処理を判定してください。または、 keypressd / keyreleased を使わず love.update でキー判定を行ってください。
その他参考 : help with movement - LÖVE
local isDownLeftCtrl = false
function love.draw()
-- ~処理をこちらへ
end
function love.update(dt)
isDownLeftCtrl = love.keyboard.isDown('lctrl') -- Ctrl, Alt などのキー判定は love.update() に置いてください。
love.timer.sleep(0.1)
end
function love.keypressed(key)
if key == "tab" then
love.keyboard.setKeyRepeat(false) -- 対象となるキーに対してのみキーリピートを無効にします(押しっぱなし対策)。
if isDownLeftCtrl == true then
-- ~処理をこちらへ
end
end
end
function love.keyreleased()
love.keyboard.setKeyRepeat(true)
end
用例
キーを押し続けると値を加算します。
local val = 0;
function love.update(dt)
-- キーを押し続けることにより毎秒ごとに 1 を変数へ加算します。
if love.keyboard.isDown("up") then
val = val + dt
print(val)
end
-- WASD キーのいずれかが押された時に毎秒ごとに 1 を変数へ減算します。
if love.keyboard.isDown('w', 'a', 's', 'd') then
val = val - dt
print(val)
end
end
関連