Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Последовательная загрузка нескольких картинок (http://www.flasher.ru/forum/showthread.php?t=170943)

Ookami 05.11.2011 03:19

Последовательная загрузка нескольких картинок
 
Прелоадер, после загрузки самой swf, загружает с сервера список объектов, из которого формируется массив. Массив, помимо прочего, содержит имена файлов, которые необходимо загрузить (количество меняется время от времени). Как реализовать последовательную загрузку этих самых файлов, с выводом информации о ходе загрузки (загружено 10 из 55 файлов, и процент загрузки текущего файла).

Wolsh 05.11.2011 03:41

Ну так счетчик сделать, он же индекс в массиве/векторе/XMLListe с URLами файлов, и по наступлению события COMPLETE делать ему инкремент, забирать файл у лоадера и запускать следующую загрузку.
Поскольку кол-во файлов известно, состояние счетчика известно, можно выводить цифры или даже прогрессбар.

Ookami 05.11.2011 03:46

а для самой загрузки что лучше использовать в данном контексте? Loader, URLLoader, UILoader или какие-то другие варианты есть? Каждая загружаемая картинка будет частью отдельного мувиклипа.

strangedk 05.11.2011 04:03

Ну, сами изображения загружаете простым способом:

Код AS3:

package  {
        import flash.display.Loader;
        import flash.events.Event;
        import flash.events.HTTPStatusEvent;
        import flash.events.IOErrorEvent;
        import flash.events.ProgressEvent;
        import flash.net.URLRequest;
        import flash.display.Sprite;               
 
    public class Main extends Sprite {
        public function Main() {
            loadImage("image.jpg");
        }
 
        function loadImage(url:String):void {
            var request:URLRequest = new URLRequest(url);
            var loader:Loader = new Loader();
            loader.addEventListener(Event.COMPLETE, onLoaderComplete);
            loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoaderProgress);
            loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onLoaderError);
            loader.load(request);
            addChild(loader);
        }
 
        function onLoaderComplete(event:Event):void {
            // Обработка окончания загрузки
            trace("Load sucess");
        }
 
        function onLoaderProgress(event:ProgressEvent):void {
            // Обработка процесса загрузки
            trace("Progress: " + event.bytesLoaded + " bytes loaded");
        }
 
        function onLoaderError(event:IOErrorEvent) {
            // Обработка ошибки
            trace("IOError: " + event.text);
        }
    }
}

А далее, как и сказал Wolsh, увеличиваете счетчик картинок, берете новый url из массива, и снова loadImage.

Ну, и естественно если будете использовать код, то обратите внимание на addChild, если он у вас должен добавляться в отдельный мувик.

Ookami 05.11.2011 04:23

Оу, не ожидал такого подробного объяснения. Спасибо. А в чем, все-таки, разница между URLLoader и UILoader?

strangedk 05.11.2011 04:30

Вам нужно это flash.net.URLLoader

fl.containers.UILoader
- это вообще компонент FlashIDE

Ookami 05.11.2011 04:32

Понял, благодарю за ссылки. Все получилось, вопрос исчерпан.


Часовой пояс GMT +4, время: 07:13.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.