В Flex, каков наилучший способ удалить SWF, созданный в Flash CS3? - PullRequest
2 голосов
/ 26 февраля 2009

Итак, у меня есть приложение, в котором я буду загружать любое количество SWF-файлов в SWFLoader и удалять их во время выполнения. Проблема заключается в том, что все они основаны на временных фильмах, созданных во Flash CS3. У меня очень мало контроля над тем, что в фильме, кроме того, что авторы не могут программировать какую-либо интерактивность (то есть, нет слушателей событий), но я хочу убедиться, что я использую лучшую технику, чтобы остановить и уничтожить эти вещи, чтобы они не слишком долго слоняться в памяти Вот процесс, который я использую сейчас, чтобы избавиться от них:

  1. Попробуйте остановить содержимое с помощью MovieClip (content) .stop ();
  2. Удалите всех слушателей, о которых я знаю (ENTER_FRAME и т. Д.) *
  3. Установить источник SWFLoader на ноль.
  4. скрестить пальцы, молиться, принести жертву (человека, если нужно)

Так что это похоже на работу, но есть ли какой-нибудь лучший (или более всеобъемлющий) метод, который вы, ребята, используете для выполнения этой же задачи? Честно говоря - я не совсем уверен, что эти вещи не просто хранятся в памяти, но я не слышу их, поэтому я не знаю, что они там есть ...

1 Ответ

2 голосов
/ 27 февраля 2009

Это в значительной степени верно . Loader (то, что SWFLoader использует под капотом), удаляет загруженный клип со сцены с помощью .unload (), но в зависимости от того, на что ссылался клип, клип по-прежнему выполняется и события по-прежнему запускаются.

Flash Player 10 добавил .unloadAndStop (), но это в основном то же самое, что и вы.

Вы также можете попробовать указать явный SecurityDomain (и, возможно, ApplicationDomain, чтобы все содержащиеся в нем классы также были отдельными) в необязательном параметре LoaderContext для Loader.load (), чтобы попытаться предотвратить добавление слушателей событий извне (если вы не не следует доверять ролику) и избегать формирования каких-либо ссылок на что-либо из фрагмента, чтобы его можно было собирать мусором - но, очевидно, он может все еще не выгружаться в некоторых случаях.

...