загрузчик flash as3 movieClip не загружается в числовой последовательности - PullRequest
0 голосов
/ 23 февраля 2011

Я загружаю массив видеоклипов и добавляю их на сцену с помощью flash as3, но проблема в том, что видеоклипы добавляются на сцену, как только они заканчивают загрузку, а не в порядке их расположения на массив, поэтому порядок на экране выглядит испорченным. Как я могу гарантировать, что они добавляются на сцену в том же порядке, в котором их ссылки существуют в URL? Вот мой код:

var currentLoaded:int = 0;

function loadThumbs(){
    for (var i in project_array){
        var thumbLoader:Loader = new Loader();
        thumbLoader.load(new URLRequest(project_array[i].project_thumb));
        thumbLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, thumbLoaded);
    }
}

function thumbLoaded(e:Event):void {
    project_array[currentLoaded].projectThumb.thumbHolder.addChild(e.target.content);
    admin.slideHolder.addChild(project_array[currentLoaded].projectThumb);
    currentLoaded++;
}

Ответы [ 3 ]

1 голос
/ 23 февраля 2011

Ну, я просто набрал то же решение ... чтобы загрузить в каком-то определенном порядке, вы должны сделать его рекурсивным.Вы можете попробовать библиотеку loadermax из greensock.Рок твердый, быстрый и легкий.Кроме того, это очень просто в использовании, и вы можете установить количество параллельных загрузок протекторов.Вы можете найти это здесь

1 голос
/ 23 февраля 2011

Активы могут загружаться быстрее, чем другие, поэтому что-то вроде этого может помочь ...

  function thumbLoaded(e:Event):void {
      project_array[currentLoaded].projectThumb.thumbHolder.addChild(e.target.content);
      currentLoaded++;
      if(currentLoaded>=project_array.length){
        addAssetsToStage();
      }
    }

    function addAssetsToStage():void{
      for(var i:int=0;i<project_array.length;i++)
      {
        admin.slideHolder.addChild(project_array[i].projectThumb);
      }   
    }
0 голосов
/ 23 февраля 2011

Что ж, я полагаю, это работает, но если кто-то найдет способ сделать это, не дожидаясь загрузки каждого предыдущего изображения перед началом другой загрузки, пожалуйста, дайте мне знать!

    var currentLoaded:int = 0;

function loadThumbs(){
    if (currentLoaded < project_array.length){
        var thumbLoader:Loader = new Loader();
        thumbLoader.load(new URLRequest(project_array[currentLoaded].project_thumb));
        thumbLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, thumbLoaded);
    }
}

function thumbLoaded(e:Event):void {
    project_array[currentLoaded].projectThumb.thumbHolder.addChild(e.target.content);
    admin.slideHolder.addChild(project_array[currentLoaded].projectThumb);
    currentLoaded++;
    loadThumbs();
}
...