Не удается удалить все загруженные дочерние элементы в галерее, поскольку не удается закрыть () загрузчик! - PullRequest
1 голос
/ 15 июня 2011

Это код, который я использовал в галерее, которая последовательно загружает изображения.Мои проблемы возникают, когда вам нужно открыть другой альбом с изображениями и удалить все ранее загруженные дочерние элементы в видеоклипе.Когда я загружаю новый альбом, я использовал код, который вы разместили здесь: 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,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 ]

1 голос
/ 15 июня 2011

Один из способов - назначить контейнер каждому альбому.Таким образом, когда вы хотите загрузить новый альбом, вы просто избавляетесь от предыдущего контейнера и добавляете новый в список отображения.

Если вы используете подход ООП (см. Ссылку Марти Уоллеса), одним из возможных решений может быть создание класса Album, который мог бы обрабатывать загрузку его содержимого (возможно, через LoaderMax).Выбор нового альбома приведет к удалению предыдущего из списка отображения и сохранению его для последующего вызова.

LoaderMax весьма полезен, его следует проверить.Вы можете создать последовательность загрузки и изменить ее по желанию, в зависимости от вашего взаимодействия с пользователем.

1 голос
/ 15 июня 2011

Я очень рекомендую LoaderMax от greensock.

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

Я использую его для довольно большой загрузки / выгрузки и часто выполняет очистку.

0 голосов
/ 15 июня 2011

Если вы используете ООП, вы можете структурировать свое приложение с тремя основными элементами:

  1. Main -> MovieClip
  2. Album -> MovieClip
  3. Photo -> Loader

Main будет управлять загрузкой Album, которая будет ставить в очередь и загружать экземпляры Photo.Когда Album закрыт, содержащиеся в нем экземпляры Photo могут быть удалены, а текущие Photo (s), находящиеся в очереди, можно игнорировать.

У меня есть , вы начали здесь .

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