javaScriptで、
if (event.keyCode == 38) UP();
if (event.keyCode == 39) RIGHT();
if (event.keyCode == 37) LEFT();
if (event.keyCode == 40) DOWN();
のような処理で、上下左右の方向に画像などを移動させています。
しかし、上キーと右キーを同時に押しても
右上には移動しません。
率直にJavaScriptでキーボード入力を行って
右上、右下、左上、左下のように
2つのキーを同時に押したことを判定する方法は
ありますでしょうか?
ためしに&&を用いて
上キーと右キーが押されたとき用にUP_RIGHT()
を作ってコールしたのですが思ったように動かないようでした。
どうかご教授ください。
No.1ベストアンサー
- 回答日時:
event.keyCode は発生したイベントの keyCode しか取得できません。
キーボードのしくみ上、同時に押したとしても必ずどちらかが先/後になるので、
最後に押されたキーによるイベントが発生することになります。
Shift などの特殊キー以外で「押しっぱなし」の状態を知る方法は・・
多分 onKeyDown 時に「38が押された」と変数に保持して、
onKeyUp で「38を離した」と解除するように書く必要があると思います。
(onKeyUp が何らかの原因で発生しないことがあるかどうかはわかりませんが・・。)
書くのは少々面倒かもしれません。。
興味があったので、簡単な動作確認スクリプトを書いてみました(IE用)。
一応、上手くいきそうですが・・・。
<html>
<head>
<title>keyCode Test</title>
<script type="text/javascript">
<!--
function msg(str) {
var log = document.getElementById('log');
log.innerHTML += str + "(" + event.keyCode + ") <br />";
}
// -->
</script>
</head>
<body onKeyDown="msg('keyDown')" onKeyUp="msg('keyUp')" onKeyPress="msg('keyPress')">
<div id="log"></div>
</body>
</html>
fukku22さん。
ご回答ありがとうございます。
なるほど^^押された事を変数に記録しておき、
それぞれの変数値を見て、同時押しなら処理を実行
そしてキーを離したとき変数値をクリアする…。
ということでよろしいでしょうか?
サンプルを参考に組んで見ます。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- Mac OS MacBook Airに外付けテンキー(有線)を接続しましたが、認識してくれません。 MacBook 2 2022/10/08 19:10
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- その他(プログラミング・Web制作) iMacのシェル内カーソル移動 1 2022/06/15 17:27
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- マウス・キーボード テンキーの設定がおかしくなっています。 5 2023/08/09 15:35
- マウス・キーボード scroll Lockキーを解除したけれど。 1 2022/09/16 09:23
- その他(IT・Webサービス) AutoHotKeyで、キーボードにマウスの右クリックを割り当てられる? 1 2023/03/30 00:23
- 筋トレ・加圧トレーニング 授業中/勤務中の筋トレ。 授業中や、デスクワークの仕事中にあまり目立たない筋トレを考案したので、評価 4 2022/07/31 04:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
function の return 値を表示し...
-
JavaScriptでiframeの内容を「...
-
ボタンのID名を取得するには?
-
getElementsByNameで要素が取得...
-
Backbone.js イベントが効かない
-
リンク移動先のURLを取得
-
html javascript 作った配列を...
-
キーを押している間の時間を計...
-
乱数を一定時間毎に表示させた...
-
フォーカス移動抑止について
-
月ごとに背景色を変える
-
6で割り切れる数を表示するJava...
-
SCRIPT5007: 未定義または NULL...
-
Ajax:FireFoxだと動作しない
-
JavaScript でキーを送る
-
<a href="#" …>の意味を教えて...
-
別ファイルのfunctionの読み込み方
-
JavascriptとJqueryを混在し記述
-
jQueryでdivをクリックし別窓で...
-
(Javascript)印刷するファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
getElementsByNameで要素が取得...
-
JavaScriptでiframeの内容を「...
-
キーを押している間の時間を計...
-
SCRIPT5007: 未定義または NULL...
-
JavaScript でキーを送る
-
フォーカス移動抑止について
-
リンク移動先のURLを取得
-
function の return 値を表示し...
-
初心者javascript ウィンドウサ...
-
ボタンのID名を取得するには?
-
フレームサイズの変更について
-
iframeの中から親ページをスム...
-
乱数を一定時間毎に表示させた...
-
ボタンを押してテキストエリア...
-
出荷予定日を表示するJavaスク...
-
XMLHTTPRequestでstatusが0に
-
自動ジャンプでフォームデータ...
-
ページ全体を検索して特定文字...
-
JavaScriptでの西暦下2桁での表...
-
idHOGEで取得したinnerText(数...
おすすめ情報