0

我目前在加载三个其他 swf 文件的父影片剪辑中使用三个 uiloader。这些影片剪辑中的每一个都有键盘事件,当敲击时会调用不同的声音。

当我转到影片剪辑并返回父级时遇到问题,事件侦听器仍处于活动状态。我一直在尝试不同的事情,比如从 uiloader 卸载 swf 文件,但该事件仍然处于活动状态,即使在我失去焦点后也可以直接访问它。

我很确定问题是我在舞台上有事件侦听器,但是一旦我退出 swf 文件,我真的不知道如何卸载它。

任何帮助将不胜感激。

4

1 回答 1

1

你是对的。键盘事件通常在舞台上注册(即 stage.addEventListener(KeyboardEvent.KEY_UP, someFunction); ),这意味着舞台拥有对您的电影剪辑的引用,即使您尝试卸载它,它也不会被垃圾收集。

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

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

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

于 2011-05-04T21:03:44.417 回答