Javascript小故障游戏

时间:2014-10-23 23:57:29

标签: javascript

我有一个游戏,当你点击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()

                  });
              }

http://jsfiddle.net/38bod36e/101/

1 个答案:

答案 0 :(得分:1)

您不断在handleCollisions函数中添加click事件侦听器(此部分:$('#retry').click(function () {),这迟早会因为创建/调用的事件数量疯狂而终止您的性能大。这是你需要注意摆脱毛刺的事情。

我将点击处理程序功能移到了外面,它运行得很好。我还在每一帧都禁用了控制台日志,因为它也会破坏性能。

请在此处查看:http://jsfiddle.net/38bod36e/103/

如果你想要一致的表现,要小心这样的东西。在控制台中查看事件数量随原始代码中呈现的每个帧的增长情况:http://jsfiddle.net/38bod36e/105/