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

m
m (注釈)
 
(One intermediate revision by the same user not shown)
Line 23: Line 23:
  
 
== 関数 ==
 
== 関数 ==
{{newin (日本語)|[[0.10.2 (日本語)]]|102|type=異形}}
+
{{newin (日本語)|[[0.10.2 (日本語)|0.10.2]]|102|type=異形}}
 
=== 概要 ===
 
=== 概要 ===
 
<source lang="lua">
 
<source lang="lua">
Line 34: Line 34:
 
=== 返値 ===
 
=== 返値 ===
 
{{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]] で組み合わせ先のキーに対する処理を判定してください。または、 keypressd  / keyreleased を使わず love.update でキー判定を行ってください。
+
* Ctrl, Alt, Shift などの修飾キーを押しながら別のキーが押された場合 (ショートカットキー、またはコンビネーションキー) の判定は [[love.keypressed (日本語)|love.keypressed]] では大幅な判定遅延の発生、キーリピートが効かないなど正常に動作しません。必ず [[love.update (日本語)|love.update]] 側で修飾キーの判定を行いフラグを立ててから [[love.keypressed (日本語)|love.keypressed]] で組み合わせ先のキーに対する処理を判定してください。または、 keypressd  / keyreleased を使わず love.update でキー判定を行ってください。
  
  

Latest revision as of 06:40, 27 June 2023

特定のキーが押されたかどうか検出します。 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 です。

関数

LÖVE 0.10.2 から使用可能
この異形は以前のバージョンでは非対応です。

概要

anyDown = love.keyboard.isDown({ key, ... })

引数

table keys
検出するキーを記したテーブル。
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

関連


そのほかの言語