-9

chackイベントリスナーを常に宣言する代わりに、キーボードクリック関数を作成しました。

一度呼び出すと機能しますが、2 つ以上のインスタンスがある場合、最後のインスタンスのみが正しく機能します。

var left = y_input_s.chack (y_key.left);
var right =  y_input_s.chack (y_key.right);

「正しい」だけが機能します。

これは機能です:

y_input.prototype.chack = function (key) 
{

//38 up |40 down| 39 left | right 37 | space 32 | 

//insert key code to array dinamicly

//if its unudetfid so the key wasent pressed yet so its false
if(y_input.prototype.key_down_cack[key] == undefined)
{
    y_input.prototype.key_down_cack[key] = false;   
}

//if the key is down change its place in array to true
document.onkeydown = function(event)
{

    if(event.keyCode == key){y_input.prototype.key_down_cack[key] = true;}

}

//if the key is up change its place in array to false
document.onkeyup = function(event)
{
    if(event.keyCode == key){y_input.prototype.key_down_cack[key] = false;}
}

//return the key state from array

return y_input.prototype.key_down_cack[key] ;
    }//end chack

関数内のものをテストしたところ、「キー」の値は問題ありませんが、内部で「キー」をチャッキングすると。

document.onkeydown = function(event)
{

引数で渡された最後のchackファンクション キー値を返します。

4

1 に答える 1

2

失敗する理由は、keyup イベントを上書きし続けるためです。

document.onkeyup = function(event)

addEventListenerについて学ぶ

于 2013-04-23T13:30:57.033 に答える