Не видя код или не зная, какие события вы слушаете, и кто / что их запускает, довольно сложно узнать наверняка.
Но я предполагаю, что видеоклипы не собираются (это не обязательно утечка памяти!), И поэтому они все еще живы и здоровы. Вероятно, у вас должен быть метод, который устанавливает их в состояние ожидания, так сказать. Это означает, что вы удаляете слушателей, останавливаете таймеры и т. Д. Идея состоит в том, чтобы поместить ваш объект в состояние, в котором он не запускает никакого кода.
Простой подход к видеоклипам и другим экранным объектам, который достаточно хорош, заключается в прослушивании событий ADDED_TO_STAGE и REMOVED_FROM_STAGE. Идея здесь в том, что ваш объект «активируется», когда он добавляется на сцену, что в вашем случае будет, когда вы достигнете кадра 2 для своего класса Game; он «деактивируется» при удалении, то есть при возврате к кадру 1.
Что-то в этом роде:
public class Game extends MovieClip {
private var _timer:Timer;
public function Game() {
addEventListener(Event.ADDED_TO_STAGE,init);
addEventListener(Event.REMOVED_FROM_STAGE,destroy);
}
private function init():void {
// your init code goes here
// just an example:
_timer = new Timer(33);
_timer.addEventListener(TimerEvent.TIMER,mainLoop);
_timer.start();
trace("init");
}
private function destroy():void {
_timer.stop();
_timer.removeEventListener(TimerEvent.TIMER,mainLoop);
trace("destroy");
}
private function mainLoop(e:TimerEvent):void {
// code for main loop here...
trace("mainLoop");
}
}
Проверьте следы, чтобы увидеть, работает ли он правильно. Вы должны увидеть трассировку «init», затем «mainLoop», пока вы остаетесь в кадре 2, и «destroy», когда возвращаетесь к кадру 1. «mainLoop» должен прекратить трассировку в этой точке.
В дополнение к этому, вы можете захотеть проверить, нет ли утечки памяти (тот факт, что у вас есть 7 экземпляров, не обязательно означает, что у вас есть утечка; но в какой-то момент, если GC работает, хотя бы некоторые должен быть освобожден; если это никогда не происходит, это является признаком утечки; попробуйте заставить GC проверить, уменьшается ли количество живых экземпляров; если нет, вполне вероятно, что у вас есть утечка).