2013-03-18 48 views
0
$(document).keydown(function(e){ 
    var key=e.which; 
    //to prevent reversing, add the possible value of d which hinders the snake to go to desired direction 
    if(key=="37"&&d!="right"){ 
     if(p==true){ 
      clearInterval(game_loop); 
      game_loop=setInterval(paint,60); 
      p=false; 
      d="left"; 
     } 
     else{ 
      d="left"; 
     } 
    } 
    else if(key=="38"&&d!="down"){ 
     if(p==true){ 
      clearInterval(game_loop); 
      game_loop=setInterval(paint,60); 
      p=false; 
      d="up"; 
     } 
     else{ 
      d="up"; 
     } 
    } 
    else if(key=="39"&&d!="left"){ 
     if(p==true){ 
      clearInterval(game_loop); 
      game_loop=setInterval(paint,60); 
      p=false; 
      d="right"; 
     } 
     else{ 
      d="right"; 
     } 
    } 
    else if(key=="40"&&d!="up"){ 
     if(p==true){ 
      clearInterval(game_loop); 
      game_loop=setInterval(paint,60); 
      p=false; 
      d="down"; 
     } 
     else{ 
      d="down"; 
     } 
    } 
    else if(key=="32"){ 
     if(p==false){ 
      clearInterval(game_loop); 
      p=true; 
     } 
     else{ 
      game_loop=setInterval(paint,60); 
      p=false; 
     } 
    } 
}) 

此代码定义了我的蛇的我的keydown。问题是。每当我同时按下2个键,或者如果我按下并快速离开(也许其他组合也是可能的),游戏结束了。我的功能检查碰撞到自己的身体后,我快速按下2键后返回true像下来,离开..一次按下的javascript多个按键出现错误

它怎么fixeD?

+0

你检查第一件事是“d”的值,然后“p”和他们没有在这一点上宣布 - 有代码在这里丢失? – 2013-03-18 11:51:12

回答

1

你试过e.preventDefault()..

$(document).keydown(function(e){ 
    var key=e.which; 
    e.preventDefault(); 
+0

它不能解决问题先生。和e.preventDefault();没有突出显示在我的编辑器崇高文本2 .. – InnZaayynn 2013-03-18 11:42:10

+0

此链接将帮助你..我想..http://stackoverflow.com/questions/4173460/bind-multiple-keys-to-keypress-event – sasi 2013-03-18 11:44:09

+0

我已阅读keyup,但不知道如何在我的代码中实现..我如何实现它..? – InnZaayynn 2013-03-18 11:51:28