同时获取多个键码(javascript-socket io)

时间:2018-08-07 08:42:43

标签: javascript html socket.io

我需要从键盘上获取多个键码,例如按a + q并发送其键码,或者按a再按q并发送其键码。

以html

var tamp;
$(document).keyup(function(event){ 
      tamp=event.keyCode;        
}).keypress(function(event){
    if(event.keyCode === 68)    //d- bot
        socket.emit('keyPress',{two:68,one:tamp});
    else if(event.keyCode === 83)   //s -mid
        socket.emit('keyPress',{two:83,one:tamp});
    else if(event.keyCode === 65) //a -top
        socket.emit('keyPress',{two:65,one:tamp});
})

.js

socket.on('keyPress',function(data){
        console.log(data.one+" and "+data.two);            

});

我进入控制台日志“ 0和65”或“未定义和65”

编辑: 我不想像这样的代码cuz那样解决它,如果我这样做,将会有那么多的else(9 if asd,qwe组合(q + a,q + s,q + d ,, w + a, w + s,w + d ,, e + a,e + s,e + d)) 有更好的办法吗?还是我必须那样做

var map = {68: false, 69: false, 86: false};
$(document).keydown(function(e) {
     if (e.keyCode in map) {
         map[e.keyCode] = true;
         if (map[68] && map[69] && map[86]) {
        // FIRE EVENT
         }
     }
  }).keyup(function(e) {
    if (e.keyCode in map) {
    map[e.keyCode] = false;
   }
});

0 个答案:

没有答案