2013-03-18 47 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