首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >addChild inside MoveClip问题

addChild inside MoveClip问题
EN

Stack Overflow用户
提问于 2011-07-12 16:36:45
回答 1查看 120关注 0票数 1

我在第5帧的主时间线上有一个名为"slideShow_mc“的MovieClip。我还有以下代码

代码语言:javascript
复制
function startSlideshow():void {
    slideShow_mc.loadSlides(loadXml.xmlArray);
}

在slideShow_mc中,我调用了一个自定义类:

代码语言:javascript
复制
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。loadSlides方法中的trace(numChildren)也返回0。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-12 16:51:12

通过移动到另一个帧,您所做的就是从舞台上移除滑块。如果它包含正在接收事件的内部侦听器,则需要关闭这些侦听器。您可以尝试侦听slideShow_mc中的removedFromStage事件,然后在滑块上调用销毁函数。

代码语言:javascript
复制
//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()是我的猜测。您的类中可能有一个函数关闭了它的行为,或者您可能必须创建一个函数,但它可能没有命名为destroy。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6661488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档