Difference between revisions of "love.keyboard.isDown (日本語)"

(Created page with "特定のキーが押されたかどうか検出します。 love.keypressed または love.keyreleased とは...")
 
m (Added notes. (checking method for combination keys))
Line 20: Line 20:
 
=== 返値 ===
 
=== 返値 ===
 
{{param|boolean|anyDown|true ならば用意された任意のキーは押されており、それ以外ならば false です。}}
 
{{param|boolean|anyDown|true ならば用意された任意のキーは押されており、それ以外ならば false です。}}
 +
== 注釈 ==
 +
Ctrl, Alt, Shift などの修飾キーを押しながら別のキーが押された場合 (ショートカットキー、またはコンビネーションキー) の判定は [[love.keypressed (日本語)|love.keypressed]] では大幅な判定遅延の発生、キーリピートが効かないなど正常に動作しません。必ず [[love.update (日本語)|love.update]] 側で修飾キーの判定を行いフラグを立ててから [[love.keypressed (日本語)|love.keypressed]] で組み合わせ先のキーに対する処理を判定してください。
 +
 +
<source lang="lua">
 +
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
 +
 +
</source>
 
== 用例 ==
 
== 用例 ==
 
=== キーを押し続けると値を加算します。 ===
 
=== キーを押し続けると値を加算します。 ===

Revision as of 06:23, 18 August 2017

特定のキーが押されたかどうか検出します。 love.keypressed または love.keyreleased とは混同しないでください。

関数

概要

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 で組み合わせ先のキーに対する処理を判定してください。

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

関連


そのほかの言語