addChild внутри проблемы MoveClip - PullRequest
1 голос
/ 12 июля 2011

У меня есть MovieClip на основной временной шкале в кадре 5. Он называется «slideShow_mc».У меня также есть следующий код

function startSlideshow():void {
    slideShow_mc.loadSlides(loadXml.xmlArray);
}

Внутри slideShow_mc я вызываю пользовательский класс:

function loadSlides(xml_file:Array):void
{
    var slides:SlideShow = new SlideShow(xml_file);
    addChild(slides);
    slides.x = 0;
    slides.y = 0;
}

Если я перехожу к другим фреймам, slideShow_mc исчезает, но операторы трассировки в классе SlideShow сообщают мнечто это все еще там.Как мне это убрать?trace (slideShow_mc.numChildren) возвращает 0. trace (numChildren) внутри метода loadSlides также возвращает 0.

1 Ответ

0 голосов
/ 12 июля 2011

Все, что вы делаете, переходя к другому кадру - это убираете ползунок со сцены.Если он содержит внутренние прослушиватели, которые получают события, вам необходимо отключить их.Вы можете попробовать прослушать событие removeFromStage внутри slideShow_mc, а затем вызвать функцию уничтожения на вашем слайдере.

//inside slideShow_mc:
//define slides in a wider scope so we can kill it later:
var slides:SlideShow;
//listen for this container being removed
this.addEventListener(Event.REMOVED_FROM_STAGE,onRemoved);
//load slide function
function loadSlides(xml_file:Array):void
{
    slides = new SlideShow(xml_file);
    addChild(slides);
    slides.x = 0;
    slides.y = 0;
}
//remove handler
function onRemoved(evt:Event):void
{
    this.addEventListener(Event.REMOVED_FROM_STAGE,onRemoved);
    if(slides != null) {
        //call a function in the SlideShow class to kill its internal workings
        slides.destroy();
        //free up the object for gc
        slides = null;
    }
}

Очевидно, slides.destroy() - это гипотеза с моей стороны.Возможно, в вашем классе есть функция, которая закрывает его поведение, или вам, возможно, придется создать ее, и она может не называться уничтожить.

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