投稿者 tel | 2011年2月28日

ブラウザでのキーの同時取得

矢印キーとかを使って何が動かしたい場合、斜め方向だと上と右とか同時に押されているかどうかを分からなければならないんだけど、ブラウザでキーを取得しようとするとShift+何かみたいな同時押しは判断できるけど矢印の上、左なのは普通には取得できなかった。

しょうがないからキーのマップを作っておいてonkeydownで押されたキーを記録、onkeyupで離したことを記録するようにして、あとはsetIntervalで記録してあるキーの状態をみるようにした。

var keyState = [];
document.onkeydown = function(e) {
  keyState[e.keyCode] = true;
  return false;
};
document.onkeyup = function(e) {
  keyState[e.keyCode] = false;
  return false;
};
setInterval(function() {
  // キーの状態を確認
}, 33);

以下デモ。押されたアルファベットの色が変わる。FirefoxとGoogle Chromeで確認。

http://www.geocities.jp/telsunyh/demo/key.html

とりあえずキーボードの限界までは同時押しが認識できているみたい。


Responses

  1. z+x+dとかz+x+mとかは判定できるのに、z+x+cは判定できないのは何故ですか?

  2. こんにちは。
    私の環境(chrome、firefox)ではz+x+cの判定ができていましたので、おそらくキーボードによる違いだと思います。

  3. 自己解決しました。ハードウェアの問題のようです。


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー

%d人のブロガーが「いいね」をつけました。