1

前方、スペースバー、左の順にキーを押すと、非常に奇妙な理由があります。左は起動せず、代わりにスペースバーを返します。他の3つのキーの組み合わせは完全に機能しますが、それはうまくいきません。理由について何か手がかりはありますか?

var Ctrl = {
    init: function() {
        window.addEventListener('keydown', this.keyDown, true);
        window.addEventListener('keyup', this.keyUp, true);
    },

    keyDown: function(event) {
        console.log(event.keyCode);

        switch(event.keyCode) {
            case 37: // Left
                Ctrl.left = true;
                break;
            case 39: // Right
                Ctrl.right = true;
                break;
            case 38: // up
                Ctrl.up = true;
                break;
            case 40: // down
                Ctrl.down = true;
                break;
            case 32:
                Ctrl.space = true;
                break;
            default:
                break;
        }
    },

    keyUp: function(event) {

        switch(event.keyCode) {
            case 37: // Left
                Ctrl.left = false;
                break;
            case 39: // Right
                Ctrl.right = false;
                break;
            case 38:
                Ctrl.up = false;
                break;
            case 40:
                Ctrl.down = false;
                break;
            case 32:
                Ctrl.space = false;
                break;
            default:
                break;
        }
    }
};
4

2 に答える 2

2

キーの1つが、不要なデフォルトの動作をアクティブにしている可能性があります。event.preventDefault();イベントバインディングに追加してみることができます。

jsFiddleを確認してください

于 2012-05-13T08:54:28.180 に答える
1

キーボードのモデルによって異なります。一部のキーボードは、一部のキーの組み合わせでは機能しません。正常です。

于 2012-05-13T08:46:04.870 に答える