Ваш вопрос заключен в пару предположений о видеоклипах и поведении GC, и я думаю, что ответ на них ответит на ваш вопрос:
Когда я уничтожу контейнерный мувиклип, флэш избавится от прослушивателей событий внутри пользовательского класса вложенного мувиклипа?
Вы не можете уничтожать объекты класса в AS3, включая мувиклипы. GC уничтожает их автоматически, но только тогда, когда на них больше нет внешних ссылок. Простое удаление фрагмента ролика со сцены не «уничтожает» его в каком-либо смысле - объект все еще там, он сохраняет всех слушателей событий, вы все равно можете вращать или масштабировать его, останавливать или воспроизводить. Это все еще обычный MC во всех смыслах, просто он больше не находится на сцене, поэтому он сохраняет все свои события и слушателей, как и любой другой клип.
flash имеет тенденцию не убивать слушателей вместе с самим мувиклипом, как только он снят со сцены ...
Flash никогда автоматически не удаляет слушателей ни из чего, включая мувиклипы. Вы думаете о том, что Flash может собирать объекты со слушателями, и если объект получает GC, он больше не будет транслировать события. Однако объект получит GCed только тогда, когда на него больше нет сильных ссылок, поэтому, если вы хотите, чтобы мувиклип был разрушен, несмотря на наличие прослушивателей, тогда вы должны использовать слабые ссылки, когда вы слушаете события, например:
addEventListener( Events.BLAH, myListener, false, 0, true);
Последний аргумент («истина») указывает на слабых слушателей. Но помните, что использование слабых слушателей означает только то, что наличие слушателей не будет препятствовать уничтожению объекта. Другими словами, слушатель не будет считаться ссылкой, но вам все равно придется удалить все другие ссылки, кроме слушателей, прежде чем объект будет обработан GC - простое удаление объекта со сцены не приведет к его уничтожению, если только у вас нет других ссылок на него.
Но я узнал, как flash обрабатывает движущиеся клипы, которые вложены в родительский мувиклип и имеют прослушиватели входящего кадра.
Он обрабатывает их одинаково, независимо от того, вложены они или нет. Единственное, что вам нужно знать, это то, что когда вы добавляете один MC в качестве дочернего элемента другого, каждый из них сохраняет ссылку друг на друга, поэтому ни один из них не будет кандидатом на немедленный сбор мусора, если у них есть родительский элемент. детские отношения. Если вы удалите родительский клип со сцены и уничтожите все внешние ссылки на оба клипа, то они будут кандидатами на сборщик мусора, но не до тех пор, пока не произойдет разметка. Google mark-sweep, если вы не знакомы с такого рода коллекциями, и все должно быть достаточно ясно.
Надеюсь, это поможет!