担心AS3中有很多事件监听器

时间:2018-08-28 09:47:56

标签: actionscript-3 flash

我是该网站的新成员。我正在制作需要使用大量事件侦听器的游戏。

问题:
我的游戏中大约有300个事件监听器,我担心这是否会影响我的游戏?

2 个答案:

答案 0 :(得分:1)

是的,这会影响您的游戏,主要是因为您需要控制所有300个,以便它们不会以遗留在内存中的已失效(已释放)对象的形式出现内存泄漏,因为它们附有一个侦听器,说{{1 }}。次要方面是性能,每个听众采取行动是在幕后的几个函数调用,因此最好以某种方式组织这些听众。最好有一个按钮自己听stage并有300个这样的按钮,因为每次单击时,只有少数(理想情况下)听者会做出反应。有300个侦听器侦听MouseEvent.CLICK并不是很好,因为将调用它们中的每个框架,而最好有一个侦听器,但是随后将从该侦听器调用每个子系统或每个对象。这种方法还将减少Flash事件子系统直接调用的开销,并减少您对未附加的侦听器的麻烦。

关于侦听器的性能方面可能会更多,尤其是由于Flash引擎开发人员开始在引擎中进行安全检查,从而大大降低了事件处理的速度,因此这些内容晦涩难懂,唯一了解的是“使用较少的侦听器”。即使您设计自己的事件处理系统,或使用由另一个系统创建的系统,您仍至少必须在顶层上依赖Flash事件周期,但要点是,“越少越好” 。如果您可以减少监听器的数量,请这样做。

答案 1 :(得分:0)

如果您使用的事件侦听器是Enterframe,您会非常不清楚,请尝试在对象上不使用Enterframs并在舞台上使用它们,但如果使用的是300,则可能是个问题。

我确定只有一个子集是Enter_Frames,而大多数将是鼠标事件。而且我不认为其中大多数会在活动的MovieClips上使用。

因此,一次只激活一个子集,因此只要没有任何不良行为,多数情况下无需担心。我觉得你应该很好。但是,请务必管理所有Enterframe。