首页 > 解决方案 > 我应该有一个更新所有精灵的事件侦听器,还是每个精灵都有自己的事件侦听器?

问题描述

所以,我正在做一个游戏。我目前拥有它的方式是,每个精灵类型都有一个“gameloop”事件侦听器,并且“gameloop”事件在 for 循环中为每个精灵执行所有游戏逻辑,例如:

    document.addEventListener("gameLoop", function () {
       for (var l = 0; l < sprites.length; l++) {
          (function () {
            var sprite = sprites[l]
              //game logic for each sprite here.
            }
           })()
       }
    }, false)

在我的游戏中的任何给定点,我都可以拥有大约 40 个左右的这些精灵。我假设这种方法比让每个精灵都有自己的事件侦听器要优化得多,如下所示:

for (var l = 0; l < sprites.length; l++) {
  (function () {
    var sprite = sprites[l]
    sprite.element.addEventListener("gameLoop", function () {
            //game logic for each sprite here.
          }
    }, false)
  })()
}

我还要提一下,这些精灵一直在被创建和删除,所以我不确定事件监听器是如何工作的,如果它们对应的元素被删除,它们也会被删除,我希望如此,否则,我会认为这种方法肯定行不通。

标签: javascripthtmloptimization

解决方案


推荐阅读