Просмотр полной версии : загрузчик при использовании loadClip
Приветствую
есть ролик который загружает внутри себя еще ролики
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.loadClip("clip1.swf", mcPortfolio);
сделано это для того, чтобы меняя одну сцену не менять весь ролик (flash-сайт)
есть загрузчик, который показывает сколько сайта загрузилось:
var nLoading:Number = Math.ceil(100 * getBytesLoaded() / getBytesTotal());
но он к сожалению не видит, что грузится clip1.swf
т.е. показывает 100% и только через какое-то время переходит на следующий кадр
Подскажите как сделать так, чтобы загрузчик корректно показывал загрузку сайта
Где надо модифицировать код?
Покажите полный код загрузчика
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;
}
Включите в рассчет загружаемые клипы.
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');
}
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.