Как очистить мувиклип после .addchild?AS3 / Вспышка - PullRequest
1 голос
/ 15 февраля 2011

Я использую .addchild, чтобы добавить изображение в видеоклип:

function imageLoaded(e:Event):void {
    fn=fn+1;
    if (fn==1) { panel.estadoimg.addChild(imageLoader); loadImage(datosXML.localiza);}
    if (fn==2) { panel.mapa.mapaimg.addChild(imageLoader); fn=0; }
}

Смысл в том, что я хочу использовать этот мувиклип, как я могу его почистить? Спасибо!

Ответы [ 3 ]

1 голос
/ 15 февраля 2011

похоже, что вы добавляете изображения в два разных контейнера в вашем примере, но вы бы использовали removeChildAt (0) , чтобы вывести их оттуда, если единственное, что в мувиклипе - это изображение.также удалите всех слушателей, связанных с изображением.Обнулите изображение, чтобы предложить его для сборки мусора.

0 голосов
/ 15 февраля 2011

вы можете посмотреть, что делает casalib с casaMovieClip . Обычно я бы использовал эту библиотеку вместо добавления этих функций, но было бы хорошо иметь максимальную оценку происходящего. С removeChild все в порядке, но не зная, что еще происходит за кулисами, и не полное уничтожение объектов может привести к утечкам памяти.

Учитывая, что вы используете загрузчик изображений, я предполагаю, что у вас уже есть хотя бы один прослушиватель событий. Этот прослушиватель событий может быть подключен к вашему загруженному изображению, и даже если вы удалите его из списка отображения (через removeChild / removechildAt), у вас все еще может сохраняться объект.

0 голосов
/ 15 февраля 2011

Если imageLoader - это объект, который вы хотите удалить:

var p:DisplayObjectContainer = imageLoader.parent;
if (p)
  p.removeChild(imageLoader);

imageLoader = null;

Кроме того, если imageLoader имеет тип flash.display.Loader, то вы хотите вызвать unload() для него перед очисткой. Если это компонент Flex Image или SWFLoader, вы можете просто установить для свойства source значение null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...