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

时间:2011-06-15 02:47:44

标签: flash actionscript-3

这是我在图库中使用的代码,该代码会连续加载图像。当你必须打开一个不同的图像专辑并且必须消除动画片段中所有以前加载的孩子时,我的问题就出现了。当我加载一个新专辑时,我使用了你在这里发布的代码:AS3 How to remove previous loaders但问题是有时用户在所有照片之前离开了专辑页面,所以当他们点击一个新专辑打开一个新图像时放在其他地方导致装载机已经启动。我试图关闭()加载器,但它似乎不起作用。如果你能帮助我,我会非常感激它。提前致谢。在这里你可以看到工作网站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,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,"alpha",Regular.easeIn,0,1,0.5,true);
    scrollerTween.removeEventListener(TweenEvent.MOTION_FINISH, doNextTween)
}



}

3 个答案:

答案 0 :(得分:1)

我强烈推荐greensock的LoaderMax。

http://www.greensock.com/loadermax/

我将它用于一些非常重要的加载/卸载并处理大量的清理工作。

答案 1 :(得分:1)

一种方法是为每张专辑分配一个容器。这样,当您想要加载新专辑时,您只需删除前一个容器并将新的容器添加到显示列表中。

如果你使用OOP方法(参见Marty Wallace的链接),一个可能的解决方案可能是创建一个Album类,它可以处理其内容的加载(可能通过LoaderMax)。选择一个新专辑,将从显示列表中删除前一个专辑,并存储它以供以后调用。

LoaderMax非常有用,你应该检查一下。您可以创建加载序列并随意修改它,具体取决于您的用户交互。

答案 2 :(得分:0)

如果您使用OOP,则可以使用三个核心元素构建应用程序:

  1. Main -> MovieClip
  2. Album -> MovieClip
  3. Photo -> Loader
  4. Main将控制加载AlbumPhoto将排队并加载Album的实例。关闭Photo后,可以删除包含Photo的实例,并且可以忽略当前排队的{{1}}。

    我有got you started here