0

JQuery を使用して HTML ゲームのキー押下を監視していますが、jquery コードをゲームループに追加すると、keydown が定義されていないというエラーが表示されます。

<html>
    <head>
        //...Included JS files JQuery, and a JQuery plugin to bind keydown
        //   to a variable and to translate all the keypresses into
        //   names so that we can monitor keypress by keydown.left...
    </head>
    <body>
        <script type="text/javascript">
            var gLoop;
            //...code excluded for brevity...
            var GameLoop = function() {
                //...code excluded...
                if(keydown.left) {
                    //do stuff
                }
                gLoop = setTimeout(GameLoop, 1000/50);
            }
        </script>
    </body>
</html>

このコードは、keydown が定義されていないというエラーを受け取ります。このコードを試したときはいつでも:

    setInterval(function(){
        if(keydown.left) alert("Working");
    }, 1000/50);

それは正常に動作します!!! 私は何を間違っていますか??? 私の完全なコードは、こちらの GitHubにあります。

jQuery バージョン 1.4.4 を使用しました。https://raw.github.com/figitaki/PuzzleMan/master/key_status.jsで入手できる hotkeys プラグインを使用しました。キーダウンをバインドするために使用したコードは次のとおりです。

$(function() {
  window.keydown = {};

  function keyName(event) {
    return jQuery.hotkeys.specialKeys[event.which] ||
      String.fromCharCode(event.which).toLowerCase();
  }

  $(document).bind("keydown", function(event) {
    keydown[keyName(event)] = true;
  });

  $(document).bind("keyup", function(event) {
    keydown[keyName(event)] = false;
  });
});

アップデート:

コードを実行してもエラーは発生しなくなりましたが、左キーを押しても応答がありません。

4

2 に答える 2

1

試すgLoop = setTimeout("GameLoop();", 1000/50);

を定義した方法で関数を呼び出すことができませんでしたsetTimeout

Javascript コードは順番にロードする必要がありますが、コードを でラップする$(document).readyと、外部ファイルがロードされた後、最初にコードが起動されるようになります。

  $(document).ready(function(){
        var gLoop;
        //...code excluded for brevity...
        var GameLoop = function() {
            //...code excluded...
            if(keydown.left) {
                //do stuff
            }
            gLoop = setTimeout("GameLoop();", 1000/50);
        }
  });
于 2012-05-06T01:21:01.460 に答える
0

KeyDown を定義しましたか? これは、キープレスの関連記事です。

JS/jQuery で矢印キーをバインドする

于 2012-05-06T01:05:13.617 に答える