Actionscript 3 担心AS3中的大量事件侦听器
我是这个网站的新成员。我正在制作一个游戏,我需要使用很多事件监听器 问题:Actionscript 3 担心AS3中的大量事件侦听器,actionscript-3,flash,Actionscript 3,Flash,我是这个网站的新成员。我正在制作一个游戏,我需要使用很多事件监听器 问题: 我的游戏中将有大约300个事件侦听器,我担心这是否会影响我的游戏?是的,它会影响你的游戏,主要是因为你需要控制所有300个事件侦听器,这样它们就不会以内存中剩余的失效(已释放)对象的形式产生内存泄漏,因为它们有一个侦听器连接到舞台上。第二个方面是性能,每个侦听器执行的操作都是幕后的几个函数调用,因此最好以某种方式组织这些侦听器。有一个按钮可以自己监听,比如说MouseEvent。点击,然后有300个这样的按钮,因为每次点
我的游戏中将有大约300个事件侦听器,我担心这是否会影响我的游戏?是的,它会影响你的游戏,主要是因为你需要控制所有300个事件侦听器,这样它们就不会以内存中剩余的失效(已释放)对象的形式产生内存泄漏,因为它们有一个侦听器连接到舞台
上。第二个方面是性能,每个侦听器执行的操作都是幕后的几个函数调用,因此最好以某种方式组织这些侦听器。有一个按钮可以自己监听,比如说MouseEvent。点击
,然后有300个这样的按钮,因为每次点击时,只有少数(理想情况下只有一个)侦听器会做出反应。让300个侦听器侦听事件没有那么好。请输入_FRAME
,因为每个帧都会被调用,最好是有一个侦听器,但每个子系统或每个对象都会从该侦听器调用。这种方法还将减少Flash事件子系统直接调用的开销,并减少关于独立侦听器的麻烦
监听器可能有更多的性能方面,特别是因为Flash引擎开发人员开始在引擎中进行安全检查,大大降低了事件处理的速度,但是这些都是模糊的,关于它们唯一知道的是“使用更少的监听器”。即使你自己设计了一个事件处理系统,或者使用了另一个系统,你仍然必须依赖Flash事件周期,至少在顶层是如此,但要点是,“越少越好”。如果您可以减少侦听器的数量,请这样做。您对所使用的事件侦听器的类型非常模糊,如果它们是enterframes,则可能会出现问题尝试在对象上不使用enterframs,在舞台上使用它们,但如果您使用300
我确信只有一个子集是Enter_帧,大多数是鼠标事件。我不认为他们中的大多数人会在活跃的电影中
因此,一次只有一个子集处于活动状态,因此只要没有任何不必要的行为,基本上就不需要担心。我觉得你该走了。但一定要管理好所有的框架 我没有投你反对票,但这不是一个好问题(例如:当这样说的时候如何回答?)。(1) 你担心什么影响?(2) 你看到300名听众有什么问题吗?(3) 监听器必须连接到某个对象,你确定300个对象(图形?)本身不会影响游戏吗?如果所有事件处理程序都应该是ENTER_FRAME事件处理程序,我建议创建唯一的事件监听器,然后通过自己的算法(如signal或my Chronos)分发事件。如果这些事件是来自不同来源的不同事件,它们不会在每一帧的包中触发,我认为这很好。