PDA

Просмотр полной версии : загрузчик при использовании loadClip


Zhihar
23.08.2009, 20:57
Приветствую

есть ролик который загружает внутри себя еще ролики

var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.loadClip("clip1.swf", mcPortfolio);


сделано это для того, чтобы меняя одну сцену не менять весь ролик (flash-сайт)


есть загрузчик, который показывает сколько сайта загрузилось:

var nLoading:Number = Math.ceil(100 * getBytesLoaded() / getBytesTotal());


но он к сожалению не видит, что грузится clip1.swf
т.е. показывает 100% и только через какое-то время переходит на следующий кадр

Подскажите как сделать так, чтобы загрузчик корректно показывал загрузку сайта
Где надо модифицировать код?

Kuruki
23.08.2009, 22:08
Покажите полный код загрузчика

Zhihar
23.08.2009, 22:26
var g_nStartTime:Number = getTimer();
var g_pElementsParameters:Array = Array(70);

var g_nLoading:Number = 0;

mcBranchMask1.m_nStartPos = mcBranchMask1._x;
mcBranchMask2.m_nStartPos = mcBranchMask2._x;


for (nIndex:Number = 1; nIndex < 69; ++ nIndex)
{
g_pElementsParameters[nIndex] = 1;
this["mcElement" + nIndex]._visible = false;
}

mcButterfly._visible = false;

this.onEnterFrame = function()
{
// вычислить максимальный номер видимого элемента
var nMaxIndex:Number = Math.ceil(69 * g_nLoading / 100);

// отрисовать видимые элементы
for (nIndex:Number = 1; nIndex < nMaxIndex; ++ nIndex)
{
this["mcElement" + nIndex]._xscale = g_pElementsParameters[nIndex];
this["mcElement" + nIndex]._yscale = g_pElementsParameters[nIndex];

if (g_pElementsParameters[nIndex] < 100)
g_pElementsParameters[nIndex] *= 1.2;
else
g_pElementsParameters[nIndex] = 100;
}

// вывести процент загрузки
txtLoading = ((Math.ceil(g_nLoading) < 10) ? ("0") : ("")) + ((g_nLoading < 100) ? (Math.ceil(g_nLoading)) : ("100")) + "%";

// вычислить текущею степень загрузки сайта
var nTimeLoading:Number = (getTimer() - g_nStartTime) / 100;
var nFramesLoading:Number = Math.ceil(100 * getBytesLoaded() / getBytesTotal());

g_nLoading = nFramesLoading;//(nTimeLoading < nFramesLoading) ? (nTimeLoading) : (nFrameLoading);

if (g_nLoading >= 100)
{
for (nIndex:Number = 1; nIndex < nMaxIndex; ++ nIndex)
{
if (g_pElementsParameters[nIndex] != 100)
return;
}

mcButterfly._visible = true;

delete onEnterFrame;
_root.gotoAndPlay(2);
}

// отрисовать ветки
mcBranchMask1._x = mcBranchMask1.m_nStartPos + mcBranchMask1._width * g_nLoading / 100;
mcBranchMask2._x = mcBranchMask2.m_nStartPos + mcBranchMask2._width * g_nLoading / 100;

// отрисовать элементы веток
for (nIndex:Number = 1; nIndex < nMaxIndex; ++ nIndex)
this["mcElement" + nIndex]._visible = true;
}

dimarik
24.08.2009, 17:56
Включите в рассчет загружаемые клипы.

var loadingPool: Object = new Object();

var mcLoader: MovieClipLoader = new MovieClipLoader();

mcLoader.loadClip("clip1.swf", mcPortfolio);
this.loadingPool[mcPortfolio._name] = mcPortfolio;

mcLoader.loadClip("clip2.swf", mcAbout);
this.loadingPool[mcAbout._name] = mcAbout;

function getBytes(funcName:String):Number {
var result: Number = 0;
var mc: MovieClip;
var bytes: Number;

for (var i:String in this.loadingPool) {
mc = this.loadingPool[i];
bytes = mc[funcName].call(mc);
if (bytes) result += bytes;
}

result += this[funcName].call(this);
return result;
}

function onEnterFrame():Void {
var nLoading:Number = this.getBytes('getBytesLoaded') / this.getBytes('getBytesTotal');
}