Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在jquery/javascript上玩蛇游戏时按下键,蛇移动得更快_Javascript_Jquery - Fatal编程技术网

在jquery/javascript上玩蛇游戏时按下键,蛇移动得更快

在jquery/javascript上玩蛇游戏时按下键,蛇移动得更快,javascript,jquery,Javascript,Jquery,我的JavaScript代码如下所示: $(document).keydown(function(event){ var move, inter; clearInterval(inter); inter = setInterval(move = function() { var dir = $(".snake").data('dir'); var snake = $('.snake'); var food = $('.foo

我的JavaScript代码如下所示:

$(document).keydown(function(event){
    var move, inter;
    clearInterval(inter);
    inter = setInterval(move = function() {
        var dir = $(".snake").data('dir');
        var snake = $('.snake');
        var food = $('.food');
        if(dir == 'top') {
            snake.css({"top": $(".snake").position().top + 5 + "px"});
        }
        if(dir == 'bottom') {
            snake.css({"top": $(".snake").position().top - 5 + "px"});
        }
        if(dir == 'left') {
            snake.css({"left": $(".snake").position().left + 5 + "px"});
        }
        if(dir == 'right') {
            snake.css({"left": $(".snake").position().left - 5 + "px"});
        }
    }, 1500);
    if(event.which == 40) {
        $(".snake").data('dir','top');
    } else if(event.which == 39) {
        $(".snake").data('dir','left');           
    } else if(event.which == 37) {
        $(".snake").data('dir','right');        
    } else if(event.which == 38) {
        $(".snake").data('dir','bottom');    
    }; 

});​


当我按下其中一个箭头键时,蛇开始移动得更快,我如何才能关闭它?您可以自己测试。

您的
setInterval
在eventhandler中调用。将
setinterval
与共享dir变量一起移到外部。这样您就不需要
clearinterval

var dir = 'bottom';
 setInterval(move = function() {
    var snake = $('.snake');
    var food = $('.food');
    if(dir == 'top') {
        snake.css({"top": $(".snake").position().top + 5 + "px"});
    }
    if(dir == 'bottom') {
        snake.css({"top": $(".snake").position().top - 5 + "px"});
    }
    if(dir == 'left') {
        snake.css({"left": $(".snake").position().left + 5 + "px"});
    }
    if(dir == 'right') {
        snake.css({"left": $(".snake").position().left - 5 + "px"});
    }
}, 150); 
$(document).keydown(function(event){
    if(event.which == 40) {
        dir = 'top';
    } else if(event.which == 39) {
        dir = 'left';           
    } else if(event.which == 37) {
        dir = 'right';        
    } else if(event.which == 38) {
        dir = 'bottom';    
    }; 
});

干杯,效果很好:)!我会尽快接受你的回答。以后请在你的帖子中包含所有相关代码,不要只包含JSFIDLE的链接。你的文章应该独立于任何其他资源;考虑一下如果JsFoDelDead将来会发生什么情况,以后请把所有相关的代码包含在你的帖子里,不要只包含一个链接到JSFIDLE。你的文章应该独立于任何其他资源;想想如果JsfdelDead将来会发生什么。