質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

2197閲覧

JavaScriptで、2つの文字キーが同時に押されているかどうかを取得したいのですが...

nanikamado

総合スコア13

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

2クリップ

投稿2018/02/03 12:42

ブックマークレットを作ろうと思って最近JavaScriptについて調べ始めた者です。JavaScriptを含め、プログラミングの知識はほとんどありません。
JavaScriptで、画像をA,W,S,Dキーで縦横斜めに動かしたいのですが、斜めに動かそうとしたところでつまづきました。
目的のキーが打下中かどうかを習得するとき、← , → , ↑ , ↓キーなら押している間はkeydownイベントが発生し続け、キーを離した時だけkeyupイベントが発生するため、keydownイベントが発生した時に用意した変数をtrueにし、keyupイベントが発生した時に変数をfalseにする方法が使えますが、a~zなどのキーの場合、押している間はkeydownイベントとkeyupイベントが交互に発生し続けるため、この方法が使えませんでした。
なので、keydownイベントが発生した時に用意した変数をtrueにして、その時刻を記録しておき、最後にkeyupイベントが発生してから一定時間が経っていたら変数をfalseにするという方法を考えたのですが、例えばAを押しながらBを押すと、Bのkeydownイベントは発生してもAのkeydownイベントが発生しなくなるので、この方法では同時押しの判定が出来ませんでした。
2つの文字キーが同時に押されているかどうかを取得する方法はないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

こんにちは。

以下を作ってみました。

https://jsfiddle.net/jun68ykt/0kz8zb6L/1/

※上記をブラウザで開いた直後、および、[Run]をクリックした直後は、
FireBugの入力欄にフォーカスされていると思いますので、
水色の部分を一度クリックしてから、 キーボードのA,W,S,D を
同時に押してみたり、離してみたりしてみてください。

うまく動けば、以下のように、右下の Console に、押されているキーが表示されます。

イメージ説明

参考になれば幸いです。


追記

 

 

  • さらにリファクタして、change(に thisをバインドした関数)をイベントハンドラにして、keydownkeyupに対して同じ関数オブジェクトを使い回します ???? https://jsfiddle.net/jun68ykt/0kz8zb6L/10/

投稿2018/02/03 14:02

編集2018/02/04 03:33
jun68ykt

総合スコア9058

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ここに良い感じの答えが書いてありそうですが、如何なものでしょうか?
ブラウザでのキーの同時取得

投稿2018/02/03 13:43

SatoshiMashino

総合スコア210

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

自己解決しました。「a~zなどのキーの場合、押している間はkeydownイベントとkeyupイベントが交互に発生し続けるため」というのは嘘です。
私がキー入力をいじるソフト(やまふきR)を動かしていて(そのことをすっかり忘れていました。)、それがkeydownとkeyupを交互に発生させていました。
回答していただいた方、本当にごめんなさい。

投稿2018/02/03 14:06

nanikamado

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問