Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Последовательная загрузка файлов (http://www.flasher.ru/forum/showthread.php?t=108762)

TanaTiX 28.02.2008 16:34

Последовательная загрузка файлов
 
Делаю прелоадер. В связи с этим необходимо загрузить большое количество файлов *.jpg. Имена будут отличаться не только индексом в конце.
Необходимо загрузить их последовательно (порядок не важен) для корректного отображения процента загрузки.
Заранее спасибо

iNils 28.02.2008 16:35

Ну и грузите, в чем проблема?

TanaTiX 28.02.2008 16:40

Проблема в том, что при этом происходит загрузка сразу нескольких файлов. А вот какой код написать что б было последовательно, один за другим?..

ЗЫ. Как вариант определять количество загруженной информации одновременно для всех файлов, но это ИМХО еще сложнее и не рационально, если вообще осуществимо

iNils 28.02.2008 16:52

По событию onLoadInit запускать загрузку следующего файла.

TanaTiX 28.02.2008 17:00

Код:

var my_mcl:MovieClipLoader = new MovieClipLoader();
var loadEvents:Object = {};
my_mcl.addListener(loadEvents);

this.createEmptyMovieClip("first_mc",1);
this.createEmptyMovieClip("second_mc",0);

loadEvents.onLoadProgress = function(mc:MovieClip, bl:Number, bt:Number) {
        var loadedProcent:Number = Math.round(bl/bt*100);
        trace(loadedProcent+" %");
        }
       
loadEvent.onLoadInit = function (mc:MovieClip) {
        mc._lockroot = true;
        var my_mcl:MovieClipLoader = new MovieClipLoader();
var loadEvents:Object = {};
my_mcl.addListener(loadEvents);
my_mcl.loadClip("2.jpg",second_mc);
}

my_mcl.loadClip("1.jpg",first_mc);

Вот мой код. При этом загружается только одна картинка. Может простой работающий примерчик? Или я ошибки не вижу?

iNils 28.02.2008 18:49

Вложений: 1
Поскольку данная тема стала весьма часто встречаться, то написал общий код с примером последовательной загрузки файлов, имена которых имеют числовую последовательность и общее число файлов неизвестно.
Код:

//// загрузчик
var mcl:MovieClipLoader = new MovieClipLoader ();
mcl.addListener (this);
//// итеретор
var i:Number = 0;
//// корень имени файла
var rootName:String = "image";
//// оконечание имени файла
var endName:String = ".gif";
//// переменная для хранения ссылки на передыдущий контейнер загрузки (нужно для позиционирования клипов относительно друг друга)
var mcOld:MovieClip = null;
//// событие при удачной загрузки / а также инициализирующая функция загрузки
this.onLoadInit = function () {
        var mc:MovieClip = this.createEmptyMovieClip ("mc" + i, i);
        mc._x = ((mcOld._x + mcOld._width) || 0) + 10;
        mc._y = 10;
        mcl.loadClip (rootName + i + endName, mc);
        mcOld = mc;
        i++;
};
//// событие при неудачной загрузки
this.onLoadError = function () {
        trace ("Загрузка завершена");
};
this.onLoadInit ();


CrazyFlasher 28.02.2008 19:19

этот вариант на классах, может тоже пригодится:
http://www.flasher.ru/forum/showthre...t=99030&page=3

TanaTiX 29.02.2008 00:38

iNils, спасибо за пример, очень помогает.
Но задача у меня несколько отличается. Вот пишу:
Код:

var my_mcl:MovieClipLoader = new MovieClipLoader();
var loadEvents:Object = {};
my_mcl.addListener(loadEvents);
var i:Number=0;
_root.onLoadInit=function(){
        _root.createEmptyMovieClip("n"+i+"_mc",i);
        my_mcl.loadClip("image"+i+".jpg","n"+i+"_mc");
        i++;
        }
_root.onLoadInit();
_root.onLoadProgress=function(bytesLoaded:Number){
        trace("Загрузка продолжается");
        trace(bytesLoaded);
        }
_root.onLoadError = function () {
        trace ("Загрузка завершена");
};

При этом загружается только image0.jpg (хотя как я понимаю на экране должно появляться последнее изображение, а не первое) и ничего не трейсится :( Что у меня не так в коде?

MrPoma 29.02.2008 00:55

Код:

var my_mcl:MovieClipLoader = new MovieClipLoader();
my_mcl.addListener(this);
var i:Number=0;
onLoadInit=function(){
        _root.createEmptyMovieClip("n"+i+"_mc",i);
        my_mcl.loadClip("image"+i+".jpg","n"+i+"_mc");
        i++;
        }
onLoadInit();
onLoadProgress=function(bytesLoaded:Number){
        trace("Загрузка продолжается");
        trace(bytesLoaded);
        }
onLoadError = function () {
        trace ("Загрузка завершена");
};


TanaTiX 29.02.2008 01:44

Вот спасибо. +1 всем.

ra26info 31.03.2008 13:27

Позволил себе дописать ваш загрузчик, теперь он грузит файлы разного типа и позиционирует их один под другим. :)

Код:

//// загрузчик
var mcl:MovieClipLoader = new MovieClipLoader ();
mcl.addListener (this);
//// итеретор
var i:Number = 0;
//// массив файлов
var rootName:Array = new Array();
var rootName = ["content/test.swf","test.jpg","test_test.jpg"];
//// переменная для хранения ссылки на передыдущий контейнер загрузки (нужно для позиционирования клипов относительно друг друга)
var mcOld:MovieClip = null;
//// событие при удачной загрузки / а также инициализирующая функция загрузки
this.onLoadInit = function () {
        var mc:MovieClip = this.createEmptyMovieClip ("mc" + i, i);
        mc._x = 10;
        mc._y = ((mcOld._y + mcOld._height) || 0) + 10;;
        mcl.loadClip (rootName[i], mc);
        mcOld = mc;
        i++;
};
//// событие при неудачной загрузки
this.onLoadError = function () {
        trace ("Загрузка завершена");
};
this.onLoadInit ();

П.С. Спасибо, а то я намудрил с онентерфрэймами ))


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

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