我目前在父动画片段中使用了三个uiloader,它们加载了另外三个swf文件。这些动画片段中的每一个都有键盘事件,当被击中时会调用不同的声音。
当我去看电影剪辑并返回父母时遇到问题,事件监听器仍处于活动状态。我一直在尝试不同的方法,例如从uiloader卸载swf文件,但事件仍处于活动状态,即使在我没有聚焦之后也能直接访问它。
我非常确定问题是我在舞台上有事件监听器,但是当我离开swf文件时,我真的不知道如何卸载它。
非常感谢任何帮助。
答案 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。