Небольшое дополнение к довольно старому посту Простой прелоадер на ActionScript 3.0. Если вы хотите выводить в текстовом поле прогресс загрузки в килобайтах и/или процентах, то можно использовать код следующего вида...
Код ActionScript 3.0:
/*
устанавливаем значение переменных
*/
var w:uint = 200;// ширина прелоадера
var h:uint = 10;// высота прелоадера
var colorFon:uint = 0xcccccc;// цвет фона прелоадера
var color:uint = 0x333333;// цвет индикатора загрузки
/*
останавливаем воспроизведение флеш-ролика в первом кадре
*/
stop();
/*
рисуем контейнер прелоадера
*/
var pContainer:Sprite = new Sprite();
pContainer.graphics.lineStyle(1,color,1);
pContainer.graphics.beginFill(colorFon,1);
pContainer.graphics.drawRect(0,0,w,h);
pContainer.graphics.endFill();
addChild(pContainer);
/*
помещаем наш прелоадер на середину флеш-ролика
*/
pContainer.x = (stage.stageWidth - w) / 2;
pContainer.y = (stage.stageHeight - h) / 2;
/*
рисуем индикатор загрузки
*/
var indicator:Sprite = new Sprite();
indicator.graphics.beginFill(color,1);
indicator.graphics.drawRect(0,0,w,h);
indicator.graphics.endFill();
pContainer.addChild(indicator);
/*
задаём форматирование для текстового поля
*/
var pF:TextFormat = new TextFormat();
pF.bold = true;
pF.color = color;
pF.font = "Verdana";
pF.size = 12;
/*
само текстовое поле, в котором будет отображаться процесс загрузки
*/
var pTF:TextField = new TextField();
pTF.defaultTextFormat = pF;
pTF.selectable = false;
pTF.autoSize = TextFieldAutoSize.LEFT;
pContainer.addChild(pTF);
pTF.text = "Loading...";
pTF.y = h;
/*
в каждом новом кадре проверяем объём загруженной информации и на основе этой информации изменяем индикатор загрузки + выводим данные в процентах и килобайтах
*/
addEventListener(Event.ENTER_FRAME, onEnterFrames);
function onEnterFrames(event:Event)
{
var bLoaded:uint = loaderInfo.bytesLoaded;
var bTotal:uint = loaderInfo.bytesTotal;
indicator.scaleX = bLoaded / bTotal;
/*
вычисляем, сколько процентов загружено
*/
var p:uint = Math.floor(bLoaded / bTotal * 100);
/*
вычисляем, сколько килобайт загружено
*/
var kb:uint = Math.floor(bLoaded / 1000);
/*
выводим информацию в текстовое поле
*/
pTF.text = "Loading: " + p + "% (" + kb + "Kb)";
/*
если флеш-ролик загружен полностью, то удаляем сам прелоадер и переходим на следующий кадр
*/
if (bLoaded >= bTotal)
{
removeChild(pContainer);
removeEventListener(Event.ENTER_FRAME, onEnterFrames);
nextFrame();// или gotoAndPlay(номер_кадра);
}
}
Результат:
Приведённый выше пример - это только демонстрация работы прелоадера для flash-ролика. И для большего удобства демка зациклена. Настоящий прелоадер, естественно, сработает только один цикл и, достигнув 100-процентной загрузки, выполнит код из блока if.