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

m (Added notes. (checking method for combination keys))
m (引数)
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
特定のキーが押されたかどうか検出します。 [[love.keypressed (日本語)|love.keypressed]] または [[love.keyreleased (日本語)|love.keyreleased]] とは混同しないでください。
+
特定のキーが押されたかどうか検出します。 [[love.keypressed (日本語)|love.keypressed]] [[love.keyreleased (日本語)|love.keyreleased]] はコールバック関数です。この関数とは混同しないでください。
 
== 関数 ==
 
== 関数 ==
 
=== 概要 ===
 
=== 概要 ===
Line 6: Line 6:
 
</source>
 
</source>
 
=== 引数 ===
 
=== 引数 ===
{{param|KeyConstant|key|検出したいキー。}}
+
{{param|KeyConstant|key|検出するキー。}}
 
=== 返値 ===
 
=== 返値 ===
 
{{param|boolean|down|true ならばキーは押されており、それ以外ならば false です。}}
 
{{param|boolean|down|true ならばキーは押されており、それ以外ならば false です。}}
 
== 関数 ==
 
== 関数 ==
{{newin (日本語)|[[0.7.2]]|072|type=異形}}
+
{{newin (日本語)|[[0.7.2 (日本語)|0.7.2]]|072|type=異形}}
 
=== 概要 ===
 
=== 概要 ===
 
<source lang="lua">
 
<source lang="lua">
Line 16: Line 16:
 
</source>
 
</source>
 
=== 引数 ===
 
=== 引数 ===
{{param|KeyConstant|key|検出したいキー。}}
+
{{param|KeyConstant|key|検出するキー。}}
{{param|KeyConstant|...|検出したい追加のキー。}}
+
{{param|KeyConstant|...|続けて検出するキー。}}
 +
 
 
=== 返値 ===
 
=== 返値 ===
 
{{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]] で組み合わせ先のキーに対する処理を判定してください。
+
* この関数はコールバック関数ではありませんのでオーバーライド(上書き)しないでください。
 +
* Ctrl, Alt, Shift などの修飾キーを押しながら別のキーが押された場合 (ショートカットキー、またはコンビネーションキー) の判定は [[love.keypressed (日本語)|love.keypressed]] では大幅な判定遅延の発生、キーリピートが効かないなど正常に動作しません。必ず [[love.update (日本語)|love.update]] 側で修飾キーの判定を行いフラグを立ててから [[love.keypressed (日本語)|love.keypressed]] で組み合わせ先のキーに対する処理を判定してください。または、 keypressd  / keyreleased を使わず love.update でキー判定を行ってください。
 +
 
 +
 
 +
その他参考 : [https://love2d.org/forums/viewtopic.php?t=83706 help with movement - LÖVE]
  
 
<source lang="lua">
 
<source lang="lua">
Line 52: Line 57:
  
 
</source>
 
</source>
 +
 
== 用例 ==
 
== 用例 ==
 
=== キーを押し続けると値を加算します。 ===
 
=== キーを押し続けると値を加算します。 ===
Line 79: Line 85:
 
{{#set:Since=000}}
 
{{#set:Since=000}}
 
== そのほかの言語 ==
 
== そのほかの言語 ==
{{i18n|love.keyboard.isDown}}
+
{{i18n (日本語)|love.keyboard.isDown}}

Revision as of 12:53, 28 June 2019

特定のキーが押されたかどうか検出します。 love.keypressedlove.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 で組み合わせ先のキーに対する処理を判定してください。または、 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

関連


そのほかの言語