イルリッヒたん@Wiki

イベント関連3

最終更新:

匿名ユーザー

- view
管理者のみ編集可

キーイベントについて

<Version 0.12.0>

キーイベントの詳細みたいなもの。

KeyInput.PressedDown

キーが押されていればtrue 、放されていればfalse
キーイベントはキーを押した時だけではなく、放した時にも発生するので、このフラグで押されたか放されたかを判別する。
「放された」を検出するようにすれば、タメ撃ちとかを実装できる。

KeyInput.KeyとKeyInput.Charの違い

KeyInput.Keyには押されたキーのキーコードが入る。
KeyInput.Charには押されたキーの文字コードが入る。
Key Char
[1](フルキー) 0x31 0x31
[1](テンキー) 0x61 0x31
[!](フルキー) 0x31 0x21
上は押されたキーと取得できる値の関係を表にしたもの。
フルキー[1]とテンキーの[1]の場合、それぞれは別々のキーなのでKeyInput.Keyには別々のキーコードが入る。
しかし、どちらのキーも入力される文字は同じ"1"なのでKeyInput.Charには同じ値が入る。
フルキー[1]とフルキー[!]の場合は、押されたキー自体は同じなのでKeyInput.Keyには同じ値が入る。
しかし、入力される文字が違う為それぞれ"1"と"!"が入る。

KeyInput.ControlとKeyInput.Shift

KeyInput.Control が[Ctrl]に、KeyInput.Shift が[Shift]に対応していて、押されていればtrue に放されていればfalse になる。
これを利用すれば、[Ctrl]や[Shift]と他のキーの同時押しを処理できる。

……と思ったらそんなに甘くなかった。
というのも、[Ctrl]や[Shift]も通常のキーとして入力されるので、例えば[A]キーを押した状態で[Shift]を押すと、得られるのは[A]キー+KeyInput.Shift(true)ではなく、[Shift]キー+KeyInput.Shiftなってしまう。
逆に、[Shift]を押した状態で[A]キーを押した場合は、[A]キーのコード+KeyInput.Shift(true)で同時入力になる。

KeyInput.ControlとKeyInput.Shiftは放された時点でfalseになる(イベント発生の時点で既にfalse)、そのためKeyInput.PressedDown と組み合わせて、「放された」の検出は出来ない。


名前:
コメント:
記事メニュー
目安箱バナー