Общие сведения о Flash SWC, импортированных в Flex Builder 3, и анимация с ключевыми кадрами - PullRequest
1 голос
/ 25 марта 2010

Я пытаюсь понять, что происходит в SWC, который я импортирую из Flash CS4 в Flex Builder 3. В частности, я использую SWC, предоставляемый Designer, в качестве анимации для пользовательского прелоадера (в подклассе DownloadProgressBar).

Проблема, которую я пытаюсь понять, заключается в том, что после запуска FlexEvent.INIT_COMPLETE я очищаюсь, удаляя swc, выполнив следующее:

removeChild(myPreloader);
myPreloader = null;

хотя даже после того, как я удалил это (что успешно, как я проверил, сравнив this.numChildren до и после вызова), анимация с ключевым кадром все еще продолжает работать (не заметно). Это было обнаружено Проектировщиком, помещающим трассировку во временную линию анимации (во Flash).

Может кто-нибудь сказать мне, почему, даже после того, как я удалил анимацию из подкласса DownloadProgressBar, он все еще продолжает работать?

Кроме того, это стандартная практика при импорте SWC для управления очисткой ресурсов со стороны Flash (очень похоже на освобождение памяти в obj-c). Я считаю противоречащим интуиции, что удаление дочернего элемента со стороны Flex не останавливает анимацию.

Любые подсказки для этого были бы очень благодарны.

1 Ответ

0 голосов
/ 18 декабря 2010

По сути, ваш SWC-файл - это не более чем ZIP, содержащий SWF. Так что вы делаете, удаляя MovieClip со сцены, но это НЕ останавливает или выгружает его. Вы можете попробовать

myPreloader.stop();

чтобы остановить анимацию и

myPreloaderLoader.unload();

после того, как вы убрали предмет со сцены, чтобы освободить память.

Однако будьте осторожны: сборка мусора в Flash Player не всегда работает правильно. Если в myPreloader запущен какой-либо ActionScript, скорее всего, он продолжит работать и будет игнорироваться во время сборки мусора. Обычно лучше всего включить метод clear() или destroy() для всех классов AS и вызвать его при Event.REMOVED_FROM_STAGE. Это должен сделать ваш коллега-дизайнер, но по моему опыту это самая чистая процедура.

...