我正在flash和as3中构建动画,我有一个函数,我在其中添加一个阶段eventListener,stage.addEventListener(Event.ENTER_FRAME,setScrollPercent,false,0,true);
由于此事件是在函数函数内设置的,"两个函数深度",如何从函数外部重置所有阶段事件侦听器而不会出现错误?
AS eventlisteners的最佳实践是:
使它变弱(正如你所做的那样,addEventListener的最后一个参数)
处理后将事件监听器设置为null(严格来说,如果将其设置为弱,则不需要)
Flex不会给你析构函数.它有自己的垃圾收集器在后台运行管理内存.一旦没有对它的引用,它就会清理一块内存.好吧,强有力的参考.默认情况下,所有对象都具有强引用.事件处理程序,因为它们往往是性能瓶颈,具有声明自己弱的特殊能力 - 弱参考.当然,只有在使用该addEventHandler()
函数附加事件处理程序时才可以这样做.GC没有考虑弱引用,因此,当所有强引用都消失后,它们将被自动垃圾收集,使您免于必须=null
手动执行的紧张情况.当您未指定参数时,您将执行此操作.默认情况下,
然而,标记它们较弱会产生副作用.它们可以在你不知道的情况下消失在空气中.最终,你会知道,但就一个讨厌的bug而言.这是什么导致你的问题?也许,可能不是.你必须要做实验.此外,如果您可以向我们提供更多详细信息,例如确切的错误代码,某些来源,这将有所帮助.
希望这可以帮助.快乐屈服:)