担心 AS3 中有很多事件监听器
Worry about a lot of event listener in AS3
我是这个网站的新成员。我正在制作一款需要使用大量事件监听器的游戏。
问题:
我的游戏会有300个左右的事件监听器,我担心这会不会影响我的游戏?
是的,它会影响你的游戏,主要是因为你需要控制所有 300 个,这样它们就不会以失效(已释放)对象的形式留在内存中造成内存泄漏,因为它们有一个附加的听众说 stage
。次要方面是性能,每个采取行动的听众都是幕后的几个函数调用,因此最好以某种方式组织这些听众。让一个按钮自己监听 MouseEvent.CLICK
并拥有 300 个这样的按钮很好,因为每次单击时只有少数(最好是一个)听众会做出反应。让 300 个侦听器侦听 Event.ENTER_FRAME
不太好,因为每一帧都会调用所有这些侦听器,最好只有一个侦听器,但是每个子系统或每个对象都会从该侦听器调用。这种方法还将减少 Flash 事件子系统直接调用的开销,并减少有关未附加侦听器的麻烦。
关于侦听器可能存在更多性能方面的问题,特别是自从 Flash 引擎开发人员开始对引擎进行安全检查,大大减慢了事件处理速度后,这些方面却很模糊,唯一知道的是 "use fewer listeners"。即使您设计了自己的事件处理系统,或使用其他人制作的系统,您仍然至少在顶层必须依赖 Flash 事件循环,但要点是 "the fewer, the better"。如果你能减少听众的数量,请这样做。
好吧,你对你使用的事件监听器的类型非常模糊,如果它们是 enterframes,那么尝试不在对象上使用 enterframs 并在舞台上使用它们可能是个问题,但如果你使用 300。
我确定只有一个子集 Enter_Frames 并且大多数是鼠标事件。而且我认为他们中的大多数人不会出现在活跃的 MovieClips 上。
所以一次只有一个子集处于活动状态,所以只要没有任何不需要的行为,基本上就没什么好担心的。我觉得你应该可以走了。但请管理您所有的 enterframes。
我是这个网站的新成员。我正在制作一款需要使用大量事件监听器的游戏。
问题:
我的游戏会有300个左右的事件监听器,我担心这会不会影响我的游戏?
是的,它会影响你的游戏,主要是因为你需要控制所有 300 个,这样它们就不会以失效(已释放)对象的形式留在内存中造成内存泄漏,因为它们有一个附加的听众说 stage
。次要方面是性能,每个采取行动的听众都是幕后的几个函数调用,因此最好以某种方式组织这些听众。让一个按钮自己监听 MouseEvent.CLICK
并拥有 300 个这样的按钮很好,因为每次单击时只有少数(最好是一个)听众会做出反应。让 300 个侦听器侦听 Event.ENTER_FRAME
不太好,因为每一帧都会调用所有这些侦听器,最好只有一个侦听器,但是每个子系统或每个对象都会从该侦听器调用。这种方法还将减少 Flash 事件子系统直接调用的开销,并减少有关未附加侦听器的麻烦。
关于侦听器可能存在更多性能方面的问题,特别是自从 Flash 引擎开发人员开始对引擎进行安全检查,大大减慢了事件处理速度后,这些方面却很模糊,唯一知道的是 "use fewer listeners"。即使您设计了自己的事件处理系统,或使用其他人制作的系统,您仍然至少在顶层必须依赖 Flash 事件循环,但要点是 "the fewer, the better"。如果你能减少听众的数量,请这样做。
好吧,你对你使用的事件监听器的类型非常模糊,如果它们是 enterframes,那么尝试不在对象上使用 enterframs 并在舞台上使用它们可能是个问题,但如果你使用 300。
我确定只有一个子集 Enter_Frames 并且大多数是鼠标事件。而且我认为他们中的大多数人不会出现在活跃的 MovieClips 上。
所以一次只有一个子集处于活动状态,所以只要没有任何不需要的行为,基本上就没什么好担心的。我觉得你应该可以走了。但请管理您所有的 enterframes。