Javascript双动游戏问题

时间:2014-10-25 22:10:33

标签: javascript

在我的游戏中,当你在游戏中死于屏幕时,但出于某种原因,当你点击主菜单时,再次进行第一级,然后向左或向右移动它会移动他?每次你点击开始我都这样做,以便它再次重置它以防万一这可能是为什么?这是我认为可能导致这一问题的功能吗?

          $('#yes').click(function() {

                      $("#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()
          $('#startLevel1').hide(); 
      });

链接:http://jsfiddle.net/8h7n2oca/20/ 任何事情都有帮助,谢谢

1 个答案:

答案 0 :(得分:0)

当游戏重置时,声音就像一个事件被重新绑定到你的玩家(导致2个重复事件绑定到你的玩家)确保在游戏结束时解除所有相关事件的绑定/注意重新绑定。

感谢小提琴,我看了你的代码。当您启动游戏时,您调用函数levelOne(),在此函数内运行以下代码:

document.addEventListener('keydown', function (evt) { /* your logic */ }

此代码将keydown事件上的事件侦听器绑定到文档。在游戏结束后调用levelOne()时,此代码将再次运行。现在您有两个绑定到该文档的侦听器。因此,当您移动播放器时,代码会被触发两次。

根据GameAlchemist的建议,将您的游戏设置逻辑设置为单独的函数,以便在页面加载时运行一次,这听起来像是防止重复绑定和优化代码的好方法。