Форум 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)
-   -   Предварительная загрузка данных (http://www.flasher.ru/forum/showthread.php?t=140644)

greenhill 04.06.2010 15:01

Предварительная загрузка данных
 
Здравствуйте!
Есть такая задача: есть презентация, где звучит голос, фоновая музыка и показываются картинки. Надо аудио и изображения загрузить заранее и только после полной загрузки запустить презентацию. Подскажите как грамотно сделать проверку на загрузку всех элементов, это ведь несколько разных ф-ций?

Спасибо.

mooncar 04.06.2010 15:17

Ага.
Сделай мультизагрузчик - напиши постоянно выполняющуюся функцию, которая бы проверяла состояние нескольких флагов. А их состояние меняй в true, когда то или иное содержимое загрузится полностью.
Например, для звука Sound.onLoad handler , для картинок - onLoadInit.
См. пример:
http://www.szmn.ru/exposition/index.htm

Вот выдержка из кода:
Код AS1/AS2:

////////  БАЗОВЫЙ ЗАГРУЗЧИК 
var nCount:Number = 0;
 
function checkLoad(mcTarget:MovieClip):Void{
        var nLBytes:Number = mcTarget.getBytesLoaded();
        var nTBytes:Number = mcTarget.getBytesTotal();
        var nPercent:Number = (nLBytes/nTBytes)*100;
        mcLoader.mcBar._xscale = nPercent;
        var sPercent:String = Math.floor(nPercent).toString();
        var sKBytes:String = Math.floor(nTBytes/1024).toString();
        var sMessage:String = 'загружено '+ sPercent + '%';
        mcLoader.tPercentInt.text = sMessage;
        if (nLBytes >= nTBytes && nTBytes > 0) {
        //ключевой момент - проверяются все статусы
                if (nCount >= 5  && expoLoadStatus ==1 && loadSoundStatus ==1 && loadEventsStatus == 1) {
                        clearInterval(nProgress);
                        mcTarget.gotoAndPlay('start');
                } else {
                        nCount++;
                }
        }
          updateAfterEvent();
};
var nProgress:Number = setInterval(checkLoad, 100, this);
 
...........
 
//// ЗАГРУЗЧИК ЗВУКОВ
 
var fonSound:Sound = new Sound(this.createEmptyMovieClip("mcSoundBg", this.getNextHighestDepth()));
fonSound.onLoad = function(success:Boolean) {
    if (success) {
        loadSound1Status = 1;
        this.start(0, 999);
        this.setVolume(maxFonVolume);
    }
};
 
.......
 
 
function checkLoadSound (sound1:Sound, sound2:Sound, sound3:Sound):Void {
        var nLBytes1:Number = sound1.getBytesLoaded();
        var nTBytes1:Number = sound1.getBytesTotal();
        var nLBytes2:Number = sound2.getBytesLoaded();
        var nTBytes2:Number = sound2.getBytesTotal();
        var nLBytes3:Number = sound3.getBytesLoaded();
        var nTBytes3:Number = sound3.getBytesTotal();       
        nLBytes = nLBytes1 + nLBytes2 + nLBytes3;
        nTBytes = nTBytes1 + nTBytes2 + nTBytes3;
        var nPercent:Number = (nLBytes / nTBytes) * 100;       
        mcLoader.mcBarSound._xscale = nPercent;
        var sPercent:String = Math.floor(nPercent).toString();
        var sMessage:String = 'загружено ' + sPercent + '%';
        mcLoader.sound_tf.text = sMessage;
 
        if (loadSound1Status == 1 && loadSound2Status == 1 && loadSound3Status == 1) {
                loadSoundStatus = 1//этот триггер проверяет ф-я проверки загрузки оболочки (общая ф-я проверки загрузки)
                clearInterval(SOUNDLOAD);
        }
        updateAfterEvent();
};
var SOUNDLOAD = setInterval(checkLoadSound, 100, fonSound, hintSound, himnSound); //стартуем загрузчик звуков
fonSound.loadSound(CommonPath + 'background.mp3' + suffix, false); //грузим  музыку
hintSound.loadSound(CommonPath + 'hint.mp3' + suffix, false); //грузим подсказку (диктор)
himnSound.loadSound(CommonPath + 'himn.mp3' + suffix, false); //грузим гимн

И т.д..

Делалось давно, не все тут оптимально, код приведешл лишь для понимания принципа. (Картинки там грузятся пачками, с помощью MCL, в конце всех загрузок expoLoadStatus = 1.)

greenhill 04.06.2010 15:23

Спасибо огромное, mooncar, сейчас буду разбираться
Вы уже не раз спасали !


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

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