Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.06.2010, 15:01
greenhill вне форума Посмотреть профиль Отправить личное сообщение для greenhill Посетить домашнюю страницу greenhill Найти все сообщения от greenhill
  № 1  
Ответить с цитированием
greenhill
 
Аватар для greenhill

Регистрация: Mar 2009
Сообщений: 281
Отправить сообщение для greenhill с помощью ICQ
По умолчанию Предварительная загрузка данных

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

Спасибо.
__________________
http://zenpro.blogspot.com/

Старый 04.06.2010, 15:17
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Ага.
Сделай мультизагрузчик - напиши постоянно выполняющуюся функцию, которая бы проверяла состояние нескольких флагов. А их состояние меняй в 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.)


Последний раз редактировалось mooncar; 04.06.2010 в 15:41.
Старый 04.06.2010, 15:23
greenhill вне форума Посмотреть профиль Отправить личное сообщение для greenhill Посетить домашнюю страницу greenhill Найти все сообщения от greenhill
  № 3  
Ответить с цитированием
greenhill
 
Аватар для greenhill

Регистрация: Mar 2009
Сообщений: 281
Отправить сообщение для greenhill с помощью ICQ
Спасибо огромное, mooncar, сейчас буду разбираться
Вы уже не раз спасали !
__________________
http://zenpro.blogspot.com/

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:51.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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