即使卸载了uiloader,EventListener仍然处于活动状态

时间:2011-05-04 20:06:09

标签: flash caching actionscript event-listener uiloader

我目前在父动画片段中使用了三个uiloader,它们加载了另外三个swf文件。这些动画片段中的每一个都有键盘事件,当被击中时会调用不同的声音。

当我去看电影剪辑并返回父母时遇到问题,事件监听器仍处于活动状态。我一直在尝试不同的方法,例如从uiloader卸载swf文件,但事件仍处于活动状态,即使在我没有聚焦之后也能直接访问它。

我非常确定问题是我在舞台上有事件监听器,但是当我离开swf文件时,我真的不知道如何卸载它。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

你是对的。键盘事件通常在舞台上注册(即stage.addEventListener(KeyboardEvent.KEY_UP,someFunction);),这意味着该舞台包含对您的movieclip的引用,防止它收集垃圾,即使您尝试卸载它也是如此。

有两种方法可以解决这个问题。您必须取消注册keyboardListener stage.removeEventListener(KeyboardEvent.KEY_UP,someFunction);或者您可以将监听器注册为弱引用:

stage.addEventListener(KeyboardEvent.KEY_UP,someFunction,false,0,true);

其中最后一个参数(true)表示该事件被注册为弱引用。默认为false。

相关问题