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;
        }
    }
})

このコードは、ヘビのキーダウンを定義します。問題は。2つのキーを同時に押すか、非常に速く押して離すと(おそらく他の組み合わせも可能です)、ゲームは終了します.2つのキーをすばやく押すと、自分の体への衝突をチェックする関数がtrueを返します下と左のように..

どのように修正できますか?

4

1 に答える 1

0

e.preventDefault() を試しましたか..

$(document).keydown(function(e){
    var key=e.which;
    e.preventDefault();
于 2013-03-18T11:33:56.443 に答える