简体   繁体   中英

Javascript Event Handling Crashing

I'm currently learning JS, so rather than using a Keyboard Library I thought it better to make one myself so I get a better understanding of how it works. I'm creating a game and its not really an option to only update the game on a keyboard press, so I've created a loop to run the Library which I'll be using to update player position. The problem is it keeps crashing, I think it's something to so with creating and closing the Events so much.

The relevant code to run the library which will return a key:

function Keyboard(){
    ArcKeyboard.ActiveKeys();
};
setInterval(function(){Keyboard()},200);

The Library:

var ArcKeyboard

(function(ArcKeyboard){
    var Key = {
        1: ["No Key Assigned",0],
        2: ["No Key Assigned",0],
        3: ["No Key Assigned",0],
        4: ["No Key Assigned",0],
        5: ["No Key Assigned",0],
        6: ["No Key Assigned",0],
        7: ["No Key Assigned",0],
        8: ["backspace",0],
        9: ["tab",0],
        10: ["No Key Assigned",0],
        11: ["No Key Assigned",0],
        12: ["No Key Assigned",0],
        13: ["enter",0],
        14: ["No Key Assigned",0],
        15: ["No Key Assigned",0],
        16: ["shift",0],
        17: ["ctrl",0],
        18: ["alt",0],
        19: ["pause",0],
        20: ["capslock",0],
        21: ["No Key Assigned",0],
        22: ["No Key Assigned",0],
        23: ["No Key Assigned",0],
        24: ["No Key Assigned",0],
        25: ["No Key Assigned",0],
        26: ["No Key Assigned",0],
        27: ["esc",0],
        28: ["No Key Assigned",0],
        29: ["No Key Assigned",0],
        30: ["No Key Assigned",0],
        31: ["No Key Assigned",0],
        32: ["space",0],
        33: ["pageup",0],
        34: ["pagedown",0],
        35: ["end",0],
        36: ["home",0],
        37: ["left",0],
        38: ["up",0],
        39: ["right",0],
        40: ["down",0],
        41: ["No Key Assigned",0],
        42: ["No Key Assigned",0],
        43: ["No Key Assigned",0],
        44: ["No Key Assigned",0],
        45: ["insert",0],
        46: ["delete",0],
        47: ["No Key Assigned",0],
        48: ["0",0],
        49: ["1",0],
        50: ["2",0],
        51: ["3",0],
        52: ["4",0],
        53: ["5",0],
        54: ["6",0],
        55: ["7",0],
        56: ["8",0],
        57: ["9",0],
        58: ["No Key Assigned",0],
        59: ["No Key Assigned",0],
        60: ["No Key Assigned",0],
        61: ["No Key Assigned",0],
        62: ["No Key Assigned",0],
        63: ["No Key Assigned",0],
        64: ["No Key Assigned",0],
        65: ["a",0],
        66: ["b",0],
        67: ["c",0],
        68: ["d",0],
        69: ["e",0],
        70: ["f",0],
        71: ["g",0],
        72: ["h",0],
        73: ["i",0],
        74: ["j",0],
        75: ["k",0],
        76: ["l",0],
        77: ["m",0],
        78: ["n",0],
        79: ["o",0],
        80: ["p",0],
        81: ["q",0],
        82: ["r",0],
        83: ["s",0],
        84: ["t",0],
        85: ["u",0],
        86: ["v",0],
        87: ["w",0],
        88: ["x",0],
        89: ["y",0],
        90: ["z",0],
        91: ["windowskey",0],
        92: ["No Key Assigned",0],
        93: ["menukey",0],
        94: ["No Key Assigned",0],
        95: ["No Key Assigned",0],
        96: ["keypad0",0],
        97: ["keypad1",0],
        98: ["keypad2",0],
        99: ["keypad3",0],
        100: ["keypad4",0],
        101: ["keypad5",0],
        102: ["keypad6",0],
        103: ["keypad7",0],
        104: ["keypad8",0],
        105: ["keypad9",0],
        106: ["keypad*",0],
        107: ["keypad+",0],
        108: ["No Key Assigned",0],
        109: ["keypad-",0],
        110: ["keypad.",0],
        111: ["keypad/",0],
        112: ["f1",0],
        113: ["f2",0],
        114: ["f3",0],
        115: ["f4",0],
        116: ["f5",0],
        117: ["f6",0],
        118: ["f7",0],
        119: ["f8",0],
        120: ["f9",0],
        121: ["f10",0],
        122: ["f11",0],
        123: ["f12",0],
        124: ["No Key Assigned",0],
        125: ["No Key Assigned",0],
        126: ["No Key Assigned",0],
        127: ["No Key Assigned",0],
        128: ["No Key Assigned",0],
        129: ["No Key Assigned",0],
        130: ["No Key Assigned",0],
        131: ["No Key Assigned",0],
        132: ["No Key Assigned",0],
        133: ["No Key Assigned",0],
        134: ["No Key Assigned",0],
        135: ["No Key Assigned",0],
        136: ["No Key Assigned",0],
        137: ["No Key Assigned",0],
        138: ["No Key Assigned",0],
        139: ["No Key Assigned",0],
        140: ["No Key Assigned",0],
        141: ["No Key Assigned",0],
        142: ["No Key Assigned",0],
        143: ["No Key Assigned",0],
        144: ["numlock",0],
        145: ["scrolllock",0],
        146: ["No Key Assigned",0],
        147: ["No Key Assigned",0],
        148: ["No Key Assigned",0],
        149: ["No Key Assigned",0],
        150: ["No Key Assigned",0],
        151: ["No Key Assigned",0],
        152: ["No Key Assigned",0],
        153: ["No Key Assigned",0],
        154: ["No Key Assigned",0],
        155: ["No Key Assigned",0],
        156: ["No Key Assigned",0],
        157: ["No Key Assigned",0],
        158: ["No Key Assigned",0],
        159: ["No Key Assigned",0],
        160: ["No Key Assigned",0],
        161: ["No Key Assigned",0],
        162: ["No Key Assigned",0],
        163: ["No Key Assigned",0],
        164: ["No Key Assigned",0],
        165: ["No Key Assigned",0],
        166: ["No Key Assigned",0],
        167: ["No Key Assigned",0],
        168: ["No Key Assigned",0],
        169: ["No Key Assigned",0],
        170: ["No Key Assigned",0],
        171: ["No Key Assigned",0],
        172: ["No Key Assigned",0],
        173: ["No Key Assigned",0],
        174: ["No Key Assigned",0],
        175: ["No Key Assigned",0],
        176: ["No Key Assigned",0],
        177: ["No Key Assigned",0],
        178: ["No Key Assigned",0],
        179: ["No Key Assigned",0],
        180: ["No Key Assigned",0],
        181: ["No Key Assigned",0],
        182: ["No Key Assigned",0],
        183: ["No Key Assigned",0],
        184: ["No Key Assigned",0],
        185: ["No Key Assigned",0],
        186: [";",0],
        187: ["=",0],
        188: [",",0],
        189: ["-",0],
        190: [".",0],
        191: ["/",0],
        192: ["'",0],
        193: ["No Key Assigned",0],
        194: ["No Key Assigned",0],
        195: ["No Key Assigned",0],
        196: ["No Key Assigned",0],
        197: ["No Key Assigned",0],
        198: ["No Key Assigned",0],
        199: ["No Key Assigned",0],
        200: ["No Key Assigned",0],
        201: ["No Key Assigned",0],
        202: ["No Key Assigned",0],
        203: ["No Key Assigned",0],
        204: ["No Key Assigned",0],
        205: ["No Key Assigned",0],
        206: ["No Key Assigned",0],
        207: ["No Key Assigned",0],
        208: ["No Key Assigned",0],
        209: ["No Key Assigned",0],
        210: ["No Key Assigned",0],
        211: ["No Key Assigned",0],
        212: ["No Key Assigned",0],
        213: ["No Key Assigned",0],
        214: ["No Key Assigned",0],
        215: ["No Key Assigned",0],
        216: ["No Key Assigned",0],
        217: ["No Key Assigned",0],
        218: ["No Key Assigned",0],
        219: ["[",0],
        220: ["\\",0],
        221: ["]",0],
        222: ["#",0],
        223: ["No Key Assigned",0],
        224: ["No Key Assigned",0],
        225: ["No Key Assigned",0],
        226: ["No Key Assigned",0],
        227: ["No Key Assigned",0],
        228: ["No Key Assigned",0],
        229: ["No Key Assigned",0],
        230: ["No Key Assigned",0],
        231: ["No Key Assigned",0],
        232: ["No Key Assigned",0],
        233: ["`",0]
    };

    var KeysPressed ="";
    var Counter = 0;    
    var ActiveKeys = function(){
        document.addEventListener('keydown', function(event) {    
           Listener(event.keyCode,"keydown");
        }, false);  
        document.addEventListener('keyup', function(event) {
       Listener(event.keyCode,"keyup");
        }, false);      

        document.removeEventListener('keydown',function(event){
                   Listener(event.keyCode,"keydown");    
        },false);
        document.removeEventListener('keyup',function(event){    
       Listener(event.keyCode,"keyup");    
        },false);
    }    

    var Listener = function(key,mode){
        var i = 1;
        var j = 1;    
        if(mode=="keydown"){
            if(Key[key][1]==0){
                console.log(Key[key][0]);
                Key[key][1]=1;
            }    
        }else if(mode=="keyup"){
            if(Key[key][1]>0){
                console.log(Key[key][0]);
                Key[key][1]=0;
            }               
        }
    }

    //Export Library
    ArcKeyboard.ActiveKeys=ActiveKeys;
})(ArcKeyboard || (ArcKeyboard={}));

Please change the following:

in the begin assing the variable to the function

var ArcKeyboard = (function(){
    ...

At the end return the public functions

    //Export Library
    return {
        ActiveKeys:ActiveKeys
    };
})();

Here you have an example working: http://jsfiddle.net/6rP37/

Cheers!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM