2

私は現在、Javascript を使用した Pong ゲームのチュートリアルを行っています。特定のキーを押して、2 つのコウモリを動かす必要があるところです。K、M、A、または Z を押すとコウモリが動くはずですが、まったく動きません。私のIDEは「変数eは引数を隠す」と言います。これは私が現在使用しているコードです:

batupdate = function(e) {   
var e = window.event ? event : e;

if (e.keyCode) 
{ 
    key = e.keyCode; 
}

else if (typeof (e.which) != 'undefined') 
{ 
    key = e.which; 
}

switch (key) 
{
    case (122):
        BatL.move(1);
        break;
    case (97):
        BatL.move(-1);
        break;
    case (107):
        BatR.move(-1);
        break;
    case (109):
        BatR.move(1);
        break;
}
}

document.onkeypress = batupdate;
4

3 に答える 3

1

次のコードで変数 e を作成しています。

var e = window.event ? event : e ;

これは、batupdate 関数のスコープに存在します。また、ラベルが付けられたその関数にパラメーターを渡しています e.

基本的に、2 つの異なるものに同じ名前を使用しているため、問題があります。代わりにこれを試してください:

e = window.event ? event : e ;
于 2012-10-30T19:25:41.140 に答える
1

var e = ...2行目で変更e = ...

にブレークポイントを置いてswitch (key)と を調べkeyたり、デバッガーにまだ慣れていない場合はe書いたりして、問題を分割してみてください。console.log("E: " + e + " KEY: " + key)

それが必要かどうかはわかりませんが、おそらくそうではないかもしれませんが、私はこれらのことについて偏執的else ifですif

于 2012-10-30T19:24:09.893 に答える
0

問題は、あなたが示したコードにはありません。ここでこれを見ることができます:http://jsfiddle.net/K6MRu/

Bat[LR].move()実装がないため呼び出しを取り除き、同じデータを示すアラートに置き換えました。うまく機能することがわかります。これは、問題がBatLand/orBatR変数の値またはmove()関数の実装にあることを意味します。

IDE が表示するメッセージは、実際にはまったく問題ではありません。アクセスしようとしていないものにアクセスできないことを意味するだけです。var他の人が提案したように、インを削除することでメッセージを消すことができますvar e = window.event ? event : e;。そうすることをお勧めしますが、コウモリが動かないという問題は解決しません.

于 2012-10-30T19:45:52.777 に答える