as3 удалить дочернюю проблему
-
12-09-2019 - |
Вопрос
Я загружаю несколько SWF-файлов в 0 на своей сцене.Это страницы моего сайта.
Для перехода со страницы на страницу я использую RemoveChildAt(0), а затем добавляюChildAt("page_title", 0).
Проблема в том, что команда RemoveChild не удаляет функции из первого загруженного SWF-файла (перед выгрузкой).
Как мне тогда остановиться?
Должен ли я использовать другой способ удаления ребенка?
Спасибо!
Решение
Мне кажется, что вы на самом деле их не удаляете.Прежде всего, удаление чего-либо из списка отображения — это всего лишь визуальное/интерактивное изменение.Он все еще работает до тех пор, пока вы не удалите все ссылки на него, будь то прослушиватели событий или что-то другое, а затем вы должны установить для него значение null, чтобы сборщик мусора захватил его в следующем цикле.
Если вы используете Flash Player 10, спонсор прав, что unloadAndStop подойдет вам, поскольку они совсем недавно создали его, чтобы решить вашу проблему.
Я просто подумал, что должен объяснить, что происходит, потому что люди должны знать не только об исправлении, но и о том, почему что-то происходит.
Еще одно предложение: я бы не стал загружать эти фильмы на сцену, я бы создал контейнер Sprite
/MovieClip
чтобы хранить их таким образом, даже если вы добавите другие вещи позже, они будут разделены, чисты и к ним будет легко получить доступ через их родительский элемент (imageContainer_mc
например).
Другие советы
Предполагая, что вы загружаете Погрузчик вы можете использовать метод unloadAndStop.
Дополнительная информация здесь:
http://www.gskinner.com/blog/archives/2008/07/additional_info.html
Альтернативно вы можете загрузить вложенный фильм в другой ApplicationDomain, чтобы изолировать загруженный код от основного приложения.Взгляните на flash.system.ApplicationDomain
класс (это параметр для Loader.load()
метод).