Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 担心AS3中的大量事件侦听器_Actionscript 3_Flash - Fatal编程技术网

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)分发事件。如果这些事件是来自不同来源的不同事件,它们不会在每一帧的包中触发,我认为这很好。