С любезного разрешения Колина Мука (Colin Moock) публикую свой вольный перевод его статьи «Things you must do before unloading a SWF file». Дальнейшее повествование пойдет от имени Колина.
Если вы загрузили SWF-файл, содержащий ActionScript 3, во Flash Player 9 и теперь хотите удалить его из памяти, то вы должны перед этим его деактивировать. Иначе этот файл так и будет продолжать занимать ресурсы, и в некоторых случаях не подвергнется удалению Garbage Collector-ом.
Ниже представлен неофициальный список действий, проведение которых необходимо для деактивации SWF файла:
- Удалите ссылки на используемые внутренние ресурсы файла.
- Остановите все проигрываемые звуки.
- Остановите главный таймлайн ролика, если он проигрывается в настоящий момент.
- Остановите все проигрываемые в настоящий момент внутренние мувиклипы файла.
- Закройте соединения всех сетевых объектов, вроде экземпляров
Loader,URLLoader,Socket,XMLSocket,LocalConnection,NetConnectionиNetStream. - Обнулите все ссылки во внутренних объектах ролика на камеры и микрофоны.
- Отпишите все функции-слушатели в SWF-файле от получения событий (особенно от
Event.ENTER_FRAMEи событий клавиатуры). - Остановите все запущенные в настоящий момент интервалы при помощи функции
clearInterval(). - Остановите все объекты
Timerвызовом методаTimer.stop().
Помните, что представленный список по определению не является полным, так как он не был официально утвержден Adobe и, следовательно, не может являться исчерпывающим. Если вы знаете еще действия, которыми можно пополнить этот список, то присылайте их мне не почту (пользователь colin, домен moock.org).
Что касается Flash Player 10, то там вышеперечисленные действия можно выполнить автоматически вызовом метода unloadAndStop() класса Loader.
Для дальнейшего ознакомления с этой темой, смотрите вторую главу моей статьи «The Charges Against ActionScript 3.0», опубликованную на сайте Inside RIA и статью Гранта Скиннера «Additional Information on Loader.unloadAndStop()».




Очень познавательно. Спасибо.