Javascript小游戏

Javascript小游戏,javascript,Javascript,我有一个游戏,当你点击Obs时,你可以在屏幕上看到一个游戏。在它的面板上有一个重试按钮,它会重置它,它大部分时间都工作,但在第三次或第四次重试后,它不会重置它。它只是把它放在原地。为什么会这样?下面是我用于重置和链接的代码。谢谢 if (collides($(value), $('#player'))) { $('#levelOne').stop(); $('#player').css('border', 'solid 1p

我有一个游戏,当你点击Obs时,你可以在屏幕上看到一个游戏。在它的面板上有一个重试按钮,它会重置它,它大部分时间都工作,但在第三次或第四次重试后,它不会重置它。它只是把它放在原地。为什么会这样?下面是我用于重置和链接的代码。谢谢

if (collides($(value), $('#player'))) {
                  $('#levelOne').stop();
                  $('#player').css('border', 'solid 1px yellow');
                  //GAME OVER SCREEN START
                  $('#GameOver').fadeIn();
                  $('#retry').click(function () {
                      $('#GameOver').fadeOut();

                      // NEW LOGIC
                      $("#levelOne").css('margin-top', '-1520px');
                      $("#player").css('border', 'solid 1px green')
                      $("#player").css('margin-left', '223px');
                      $('#levelComplete').hide();
                      $('#levelOne').animate({
                          'margin-top': '+=1520px'
                      }, speed);
                      handleCollisions()

                  });
              }

您不断在
handleCollisions
函数中添加单击事件侦听器(此部分:
$(“#重试”)。单击(函数(){
),这迟早会扼杀您的性能,因为创建/调用的事件数量将变得异常庞大。这是您需要注意的问题,以消除故障

我将click handler函数移到了外部,它工作得很好。我还禁用了每个帧上的控制台日志,因为它也会降低性能

请看这里:


如果您希望获得一致的性能,请小心处理类似的内容。请在控制台中查看事件数量如何随着原始代码中呈现的每个帧而增长:

重新启动时,您应该执行完全重置。当您在框中碰撞并重新启动时,您会很快超过最大调用堆栈