Actionscript 3 AS3我应该删除VentListener吗

Actionscript 3 AS3我应该删除VentListener吗,actionscript-3,flash,Actionscript 3,Flash,我有一个非常复杂的游戏,有很多视图和控制器,它运行得非常好,但周期性地滞后。我正试图修改我的代码,使它尽可能地高效,但我有一些问题,谁是AS3处理事件 下面是一个非常基本的例子: AppController加载5个不同的OverlyController。这些OverlyController中的每一个都会发送一个Event.COMPLETE,当它们完成时,我的AppController将侦听该事件。无论我在游戏中的什么位置,我都有一个持续的事件监听器来聆听那些超级控制器 我应该只在覆盖打开时才有这

我有一个非常复杂的游戏,有很多视图和控制器,它运行得非常好,但周期性地滞后。我正试图修改我的代码,使它尽可能地高效,但我有一些问题,谁是AS3处理事件

下面是一个非常基本的例子:

AppController加载5个不同的OverlyController。这些OverlyController中的每一个都会发送一个Event.COMPLETE,当它们完成时,我的AppController将侦听该事件。无论我在游戏中的什么位置,我都有一个持续的事件监听器来聆听那些超级控制器

我应该只在覆盖打开时才有这些侦听器吗?当它们关闭时移除它们

我是否应该绕过事件侦听器周期,将AppController传递给OverlyController,这样它就可以调用公共函数而不需要EventListener


我要说的是,这些不是我要从舞台上移除的对象。他们只是被隐藏起来。如果我删除了一个对象,我总是在销毁它们之前删除它的事件侦听器。

首先下载Adobe Scout(),看看是什么导致了“滞后”——可能是垃圾收集……然后修复这个问题。删除尽可能多的侦听器始终是一件好事,但请确保是这些侦听器导致了问题。配置内存使用情况,并尽量将对象创建/销毁控制在最低限度,以避免垃圾收集(在主游戏循环期间)

在任何情况下,监听事件都不会产生延迟,另一方面,如果不断地发送许多事件,则发送事件可能会产生延迟。当很少涉及延迟问题事件时,很可能是高对象创建,这会导致大量GC传递。如果负载是由大量对象创建/破坏造成的,并且您有许多相同的对象,那么您可能需要实现对象池