Загрузка файлов по порядку во Flash? - PullRequest
1 голос
/ 16 июня 2011

Я пытаюсь загрузить кучу файлов изображений для обработки (точнее, спрайтового листа). Таким образом, мне нужно убедиться, что эти файлы загружены для обработки (в противном случае анимация становится все шаткой).

Код, который я использую, довольно стандартный:

    protected function onFileSelect(e : FileListEvent) : void
    {
        for each(var file : File in e.files)
        {
            var loader : Loader = new Loader();
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
            loader.load(new URLRequest(file.nativePath));
        }
    }

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

Любая идея, как я могу решить эту проблему и загрузить их в порядке диалогового окна открытия файла?

Спасибо.

Ответы [ 4 ]

3 голосов
/ 16 июня 2011

Кого волнует порядок, в котором они загружены, если у вас все они загружены в конце? После этого вы можете изменить их порядок в любом месте. Например, используя массив для «сохранения» относительного порядка в диалоге открытия файла:

protected function onFileSelect(e : FileListEvent) : void
    {
        var loaderArray:Array = new Array();
        var i:uint = 0;
        for each(var file : File in e.files)
        {
            loaderArray[i] = new Loader();
            loaderArray[i].contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
            loaderArray[i].load(new URLRequest(file.nativePath));
            i++;
        }
    }

Когда все они загружены (вы можете сосчитать ЗАВЕРШЕННЫЕ события, как сказал alxx), у вас есть первое изображение в loaderArray [0], второе изображение в loaderArray [1] и т. Д.

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

Хотя я бы предложил подход, предложенный Дэнией, для хранения объектов Loader в упорядоченном массиве, другой подход, который вы можете использовать, - это прочитать URL-адрес загрузчика в полной функции, а затем поместить загруженное изображение в ваш контейнер (что бы это ни было) используя этот URL для сортировки.

Идея состоит в том, что вы не знаете, в каком порядке они загружаются, но потом вы можете отсортировать их в правильном порядке, используя имена файлов.

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

Получите ваши загрузчики в массиве по порядку, начните загрузку и посчитайте ЗАВЕРШЕННЫЕ события.Когда прибывает последний, все готово.

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

Я думаю, что когда вы используете «для каждого», вам не гарантируется какой-либо конкретный порядок, в отличие от зацикливания, хотя каждый индекс в коллекции гарантирует порядок.

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

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