Форум 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)
-   -   загрузчик при использовании loadClip (http://www.flasher.ru/forum/showthread.php?t=129051)

Zhihar 23.08.2009 20:57

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

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

Код AS1/AS2:

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

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


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

Код AS1/AS2:

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

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

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

Kuruki 23.08.2009 22:08

Покажите полный код загрузчика

Zhihar 23.08.2009 22:26

Код AS1/AS2:

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

Включите в рассчет загружаемые клипы.

Код AS1/AS2:

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');
}



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

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