Просмотр полной версии : Последовательная загрузка файлов
Делаю прелоадер. В связи с этим необходимо загрузить большое количество файлов *.jpg. Имена будут отличаться не только индексом в конце.
Необходимо загрузить их последовательно (порядок не важен) для корректного отображения процента загрузки.
Заранее спасибо
Ну и грузите, в чем проблема?
Проблема в том, что при этом происходит загрузка сразу нескольких файлов. А вот какой код написать что б было последовательно, один за другим?..
ЗЫ. Как вариант определять количество загруженной информации одновременно для всех файлов, но это ИМХО еще сложнее и не рационально, если вообще осуществимо
По событию onLoadInit запускать загрузку следующего файла.
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);
Вот мой код. При этом загружается только одна картинка. Может простой работающий примерчик? Или я ошибки не вижу?
Поскольку данная тема стала весьма часто встречаться, то написал общий код с примером последовательной загрузки файлов, имена которых имеют числовую последовательность и общее число файлов неизвестно.
//// загрузчик
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/showthread.php?t=99030&page=3
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 (хотя как я понимаю на экране должно появляться последнее изображение, а не первое) и ничего не трейсится :( Что у меня не так в коде?
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 ("Загрузка завершена");
};
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 ();
П.С. Спасибо, а то я намудрил с онентерфрэймами ))
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.