EventListener по-прежнему активен, хотя uiloader выгружен - PullRequest
0 голосов
/ 05 мая 2011

В настоящее время я использую три загрузчика внутри родительского мувиклипа, который загружает три других файла swf. В каждом из этих видеороликов есть события клавиатуры, которые при ударе вызывают разные звуки.

У меня проблема, когда я иду в мувиклип и возвращаюсь к родителю, прослушиватель событий все еще активен. Я пробовал разные вещи, такие как выгрузка SWF-файла из Uiloader, но событие все еще активно и может получить к нему доступ, даже если я не в фокусе.

Я почти уверен, что проблема в том, что у меня есть слушатель событий на сцене, но я не знаю, как его выгрузить, как только я выйду из файла swf.

Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 05 мая 2011

Вы правы.События клавиатуры чаще всего регистрируются на stage (то есть stage.addEventListener (KeyboardEvent.KEY_UP, someFunction);), что означает, что на сцене хранится ссылка на ваш мувиклип, не позволяющая собирать мусор, даже если вы пытаетесь его выгрузить.

Есть два способа обойти это.Вы должны либо отменить регистрацию клавиатурыListener stage.removeEventListener (KeyboardEvent.KEY_UP, someFunction);или вы можете зарегистрировать слушателя как слабую ссылку:

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

, где последний аргумент (true) означает, чтособытие регистрируется как слабая ссылка.По умолчанию установлено значение false.

...