【问题标题】:Importance of removeEventListener? AS3removeEventListener 的重要性? AS3
【发布时间】:2015-05-13 10:48:52
【问题描述】:

我有几个关于事件监听器的问题。请回答清楚。

  1. 我们每次做 addEventListener 时总是需要 removeEventListener 吗?
  2. 当从舞台上移除一个对象时,它是否也移除了它的事件监听器? 例如,假设我有一个带有事件侦听器的文本字段,如下所示。

    txtField1.addEventListener(Event.CHANGE, F_onCHange_TxtField);

我有一个从舞台上删除文本字段的代码 我的问题是:在删除文本字段时,它是否也会自动删除 eventListener?

  1. 删除 eventListener 时,是否有助于提高性能或其他方面?

【问题讨论】:

    标签: actionscript-3 flash addeventlistener


    【解决方案1】:

    这是我的答案,如果您有任何问题,请告诉我!

    1. 嗯,不完全是。但是,如果对象上有一个活动的事件侦听器,它将永远不会被垃圾收集。最好显式删除事件侦听器,但至少使用这样的弱侦听器:

      myThing.addEventListener(Event.Complete, Handler, false, 0, true);

    最后一个参数使它变弱。

    1. 不,这与您的第一个问题有关。对象从舞台中移除后,它仍然存在于内存中。如果您有一个强大的事件侦听器,它将保留在那里。如果你把它放回舞台上,它仍然会响应它正在监听的任何事件。

    2. 删除事件侦听器与资源管理有更多关系,但如果您有一个实例,您定期创建新对象并创建事件侦听器,您肯定需要确保清理它们以防止保留应用程序生命周期中的所有这些对象。

    我希望这会有所帮助! Grant Skinner 对此有一些很棒的文章,我强烈建议您查看它们。 Start Here!

    【讨论】:

    • 我刚刚看了这篇文章。谢谢,我从中学到了很多。根据这篇文章,它还说我也需要删除所有引用。这越来越复杂了。你能给我点关于如何优化我的闪光灯的意见吗?我希望我的项目能够顺利运行,并且不会占用大量 CPU。
    • 天哪,这是一个非常广泛的要求。您可能会有一天的谷歌搜索。我学习的方法就是制作东西。让自己成为一个 FPS 计数器 (flashandmath.com/howtos/memory) 并开始制作东西,看看哪些有效,哪些无效。一旦你有了一些代码,提供指针比想出我头上的事情要容易得多......
    猜你喜欢
    • 1970-01-01
    • 2012-11-08
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多