删除一个MovieClip类会删除里面的eventListeners吗?

时间:2014-06-07 20:27:56

标签: actionscript-3 flash class actionscript event-listener

所以,我有一个类(称为类A),它添加了一个MovieClip类的子类(来自库的对象和.as文件)。 A类会删除并添加这个类很多次,所以我不想和一群没有做任何事情的听众一起玩。

我想听一下MovieClip上的点击,所以我认为至少有树的方法可以做到这一点:

  1. 在添加/删除子项的同时,在A类中添加和删除EventListener。
  2. 在MovieClip类as-file中添加EventListener(以侦听自身的点击次数。)
  3. 在MovieClip中添加一个eventlistener(在库中)。
  4. 所以,我的问题是:

    1. 上述哪种方法最好,为什么?
    2. 您是否必须删除上面备选方案1中的eventListener?这是好习惯,对吗?
    3. 重要问题:每次添加MovieClip类时,是否创建了一个新的Eventlistener,如果我编写了上面的备选方案2中的代码?和/或从Class A中删除类后会删除EventListener吗?
    4. 如果有人可以清楚地回答这些问题,一次一个,那将是非常好的,所以我可以解决问题。 =)

1 个答案:

答案 0 :(得分:1)

  1. 由于您必须在库MovieClip中单击SOMETHING visual,并且因为您的' MovieClip类作为文件'控制库MovieClip,然后你明确希望你的监听器功能在.as文件中。
  2. 2和3.我认为你说你将从A类多次添加和删除你的MovieClip。除了CLICK事件监听器之外,你的MovieClip的.as文件应该有。您正在谈论的另外两个事件监听器功能 - 一个在ADDED_TO_STAGE事件发生时触发,另一个侦听REMOVED_FROM_STAGE事件。只要在显示列表中添加或删除MovieClip本身,这两个就会添加和删除您的CLICK侦听器。

    所以在MovieClip的构造函数中这样说:addEventListener(Event,ADDED_TO_STAGE,onAddedToStage,false,0,true);

    在' onAddedToStage'功能说: addEventListener(Event,REMOVED_FROM_STAGE,onRemovedFromStage; 然后添加你的CLICK监听器。

    在'onRemovedFromStage' function:删除REMOVED_FROM_STAGE侦听器和CLICK侦听器。

    唯一没有被代码删除的侦听器是ADDED_TO_STAGE侦听器,但是因为您创建了一个弱引用(“addEventListener'行注册它”中的' true')如果不再需要MovieClip,最终将被垃圾收集。