【发布时间】:2016-04-07 15:22:37
【问题描述】:
我有一个非常复杂的游戏,它有很多视图和很多控制器,它运行得非常好,但有时会出现延迟。我正在尝试修复我的代码,使其尽可能高效,但我对 AS3 处理事件的人有一些疑问。
下面是一个非常基本的例子:
AppController 加载 5 个不同的 OverlayController。这些 OverlayController 中的每一个都在我的 AppController 侦听的完成后调度一个 Event.COMPLETE。无论我在游戏中的哪个位置,我都有一个恒定的 EventListener 来监听那些 OverlayControlllers。
当 Overlay 打开时,我应该只让那些听众在那里吗?并在它们关闭时移除它们?
我是否应该绕过事件侦听器周期并将 AppController 传递给 OverlayControllers,以便它可以调用公共函数而不需要 EventListener?
需要明确的是,这些不是我要从舞台上移除的对象。他们只是被隐藏起来。如果我删除了一个对象,我总是在销毁它们之前删除它的事件监听器。
【问题讨论】:
-
监听事件在任何情况下都不会产生延迟,另一方面,如果许多事件被不断地调度,则调度事件可能会产生。当很少涉及延迟问题事件时,很可能是由于大量 GC 传递导致的高对象创建。
标签: actionscript-3 flash