无法删除图库中所有已加载的子级,因为无法关闭加载器!

问题描述

| 这是我在画廊中依次加载图像的代码。当您必须打开其他相册并且必须消除动画片段中所有先前加载的子级时,我的问题就来了。当我加载一张新专辑时,我使用了您在此处发布的代码:AS3如何删除以前的加载程序,但问题是,有时用户会在所有图片都未显示之前就离开了专辑页面,因此当他们单击新专辑以打开新专辑时映像放置在其他地方,因为加载器已经启动。我尝试过关闭()加载程序,但似乎无法正常工作。如果您能帮助我,我将非常感激。先谢谢了。在这里,您可以看到工作网站www.barbarabritvin.com(要查看正在聊天的内容,您必须先单击相册,在所有照片加载之前离开并打开另一张照片。阿根廷加油!
getimage(dataList[0].file)


function getimage(href:String):void {


var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,imageReady);
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,showProgress);
loader.x=xCounter
loader.load(new URLRequest(href));

} 


function imageReady(e:Event):void {
var bitmap:Bitmap=e.target.content;
if (bitmap!=null) {
    bitmap.smoothing=true;
}

displayLarge2.thumb_loader.thumbHolderInside.addChildAt(e.target.loader,0)
yaCargo=true


trace(\"NUMCHILDREN\"+displayLarge2.thumb_loader.thumbHolderInside.numChildren)


collection.push(e.target.content);
xCounter=xCounter+e.target.loader.width+3
imagecounter++;
if(imagecounter < dataList.length() && loadingPics==true) {
getimage(dataList[imagecounter].file);
}

}

function clearThumbs():void
    {
        while(displayLarge2.thumb_loader.thumbHolderInside.numChildren > 0)
        {
            //Remove the first child until there are none.
            displayLarge2.thumb_loader.thumbHolderInside.removeChildAt(0);
        }
    }


displayLarge2.close.addEventListener(MouseEvent.CLICK,closeAlbum)




function closeAlbum(e:MouseEvent):void{
displayLarge2.thumb_loader.thumbHolderInside.enabled=false
loadingPics=false


            while(displayLarge2.thumb_loader.thumbHolderInside.numChildren>0) 
    { 
          displayLarge2.thumb_loader.thumbHolderInside.removeChildAt(0)
    } 


        trace(\"NUMCHILDREN\"+displayLarge2.thumb_loader.thumbHolderInside.numChildren)

imagecounter=0
xCounter=0

displayLarge2.enabled=false
displayLarge2.mouseChildren=false






var scrollerTween=TweenManager.create(displayLarge2,\"alpha\",Regular.easeIn,1,0.5,true);
scrollerTween.addEventListener(TweenEvent.MOTION_FINISH,doNextTween)
function doNextTween(e:TweenEvent):void{


    sectionThumbs.enabled=true
    sectionThumbs.mouseChildren=true
    displayLarge2.visible=false

    var          thumbsTween=TweenManager.create(sectionThumbs,true);
    scrollerTween.removeEventListener(TweenEvent.MOTION_FINISH,doNextTween)
}



}
    

解决方法

        我强烈推荐greensock的LoaderMax。 http://www.greensock.com/loadermax/ 我将其用于一些非常重要的加载/卸载并处理大量清理工作。     ,        一种解决方法是为每个专辑分配一个容器。这样,当您要加载新专辑时,您只需摆脱先前的容器并将新容器添加到显示列表中。 如果使用OOP方法(请参阅Marty Wallace的链接),则可能的解决方案是创建一个Album类,该类可以处理其内容的加载(可能通过LoaderMax)。选择一个新专辑,将从显示列表中删除上一个专辑,并将其存储以供以后调用。 LoaderMax非常有用,您应该检查一下。您可以创建加载顺序并根据您的用户交互随意修改它。     ,        如果使用OOP,则可以使用三个核心元素来构造应用程序:
Main -> MovieClip
Album -> MovieClip
Photo -> Loader
Main
将控制加载
Album
,它将排队并加载
Photo
实例。当关闭ѭ5,时,可以删除包含的
Photo
实例,并且可以忽略当前排队的
Photo
。 我让你从这里开始。