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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.01.2012, 16:13
softamore вне форума Посмотреть профиль Отправить личное сообщение для softamore Найти все сообщения от softamore
  № 1  
Ответить с цитированием
softamore

Регистрация: Jan 2012
Сообщений: 6
По умолчанию Звук в цикле

Здравствуйте уважаемые форумчане, подскажите пожалуйста новичку. У меня есть цикл, по истечении которого (вместе с надписью "Время!") мне нужно чтобы проигрывался звук...

В начале я объявляю звук:
Код AS1/AS2:
var zvuk1:Sound = new Sound();
zvuk1.attachSound("zvuk1_id");
Затем идёт цикл:

Код AS1/AS2:
button1.onPress = function()
{
sec =getTimer()	
}
_root.onEnterFrame = function()
{
 sec2 = int((getTimer()-sec)/1000)
 if(sec2<=9)
 {
	if(sec2<10)t1.text="0"+sec2
 	else if(sec2>=10) t1.text=sec2
 }
 else if(sec2=9) t1.text="Время!"
}
Куда бы я ни вставлял в него звук, он воспроизводится не по "завершению" цикла, т.е. при появлении надписи "Время!", а сразу же при переходе на кадр

P.S. Звук вставляю - zvuk1.start(0,0);

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Если для вас важно, чтобы по истечении 9 секунд проигрался звук и произошли еще какие-то действия, то лучше сделать так:
Код AS1/AS2:
var zvuk1:Sound = new Sound();
zvuk1.attachSound("zvuk1_id");
 
setTimeout(soundIt, 9000, zvuk1);
 
function soundIt(snd:Sound) 
{
	snd.start();
	//другие действия
}
И если что, в вашем коде sec изначально не определен, это произойдет только после нажатия кнопки. Хотя используется сразу, в обработчике onEnterFrame.
Если у вас в кадре стоит zvuk1.start(0,0); , то он сразу и будет запущен.

Вообще, логика запутанная, вот в этой части:
Код AS1/AS2:
if(sec2<=9)
 {
	if(sec2<10)t1.text="0"+sec2
 	else if(sec2>=10) t1.text=sec2
 }
Второе условие if(sec2>=10) не сработает никогда, поскольку главное условие if(sec2<=9).

Опишите еще раз задачу. Какую роль играет кнопка, укажите также.

Возможно, вот решение, которое вы ищете:

Код AS1/AS2:
var zvuk1:Sound = new Sound();
zvuk1.attachSound('zvuk1_id');
 
var sec:Number ;
 
button1.onPress = button1Press;
this.onEnterFrame = thisEnterFrame;
 
function  button1Press() 
{
	sec = getTimer();
}
 
function thisEnterFrame() 
{
 
	if (sec)
	{
		var sec2:Number = getTimer();
		var deltaSec:Number = int((sec2 - sec) / 1000);
 
		if (deltaSec < 9)
		{
			t1.text = deltaSec;
		}
 
		if (deltaSec == 9) 
		{
			t1.text = 'Время!'
			zvuk1.start();		
		}
	}
}
Здесь по нажатию начинается проверка, с индикацией времени. Как только после нажатия время станет равным 9 сек., проиграется звук и появится надпись "Время".
__________________
Идите первым!


Последний раз редактировалось mooncar; 25.01.2012 в 17:17.
Старый 25.01.2012, 23:46
softamore вне форума Посмотреть профиль Отправить личное сообщение для softamore Найти все сообщения от softamore
  № 3  
Ответить с цитированием
softamore

Регистрация: Jan 2012
Сообщений: 6
Спасибо большое за помощь, только осталась одна проблема, звук (он довольно короткий) проигрывается раз за разом...

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Да, недоглядел.
Замените последнее условие на:
Код AS1/AS2:
		if (deltaSec == 9) 
		{
			delete sec;
			t1.text = 'Время!'
			zvuk1.start();		
		}
Дело в том, что после удаления sec здесь прекращается проверка и звук проиграется только один раз.
Проверка будет выполняться если выполняется условие if (sec), а оно будет истинным только после нажатия кнопки, когда определится переменная.
__________________
Идите первым!

Старый 26.01.2012, 19:24
softamore вне форума Посмотреть профиль Отправить личное сообщение для softamore Найти все сообщения от softamore
  № 5  
Ответить с цитированием
softamore

Регистрация: Jan 2012
Сообщений: 6
mooncar спасибо ещё раз огромное, теперь всё работает как надо...

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

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

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


 


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


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