![]() |
|
||||||||||
|
|
|
|||||
|
Здравствуйте!
Есть такая задача: есть презентация, где звучит голос, фоновая музыка и показываются картинки. Надо аудио и изображения загрузить заранее и только после полной загрузки запустить презентацию. Подскажите как грамотно сделать проверку на загрузку всех элементов, это ведь несколько разных ф-ций? Спасибо.
__________________
http://zenpro.blogspot.com/ |
|
|||||
|
Модрон-ветеринар
|
Ага.
Сделай мультизагрузчик - напиши постоянно выполняющуюся функцию, которая бы проверяла состояние нескольких флагов. А их состояние меняй в true, когда то или иное содержимое загрузится полностью. Например, для звука Sound.onLoad handler , для картинок - onLoadInit. См. пример: http://www.szmn.ru/exposition/index.htm Вот выдержка из кода: //////// БАЗОВЫЙ ЗАГРУЗЧИК 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.) Последний раз редактировалось mooncar; 04.06.2010 в 15:41. |
|
|||||
|
Спасибо огромное, mooncar, сейчас буду разбираться
Вы уже не раз спасали !
__________________
http://zenpro.blogspot.com/ |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:51. |
|
|
« Предыдущая тема | Следующая тема » |
|
|