Просмотр полной версии : Звук в цикле
softamore
25.01.2012, 16:13
Здравствуйте уважаемые форумчане, подскажите пожалуйста новичку. У меня есть цикл, по истечении которого (вместе с надписью "Время!") мне нужно чтобы проигрывался звук...
В начале я объявляю звук:
var zvuk1:Sound = new Sound();
zvuk1.attachSound("zvuk1_id");
Затем идёт цикл:
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);
Если для вас важно, чтобы по истечении 9 секунд проигрался звук и произошли еще какие-то действия, то лучше сделать так:
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); , то он сразу и будет запущен.
Вообще, логика запутанная, вот в этой части:
if(sec2<=9)
{
if(sec2<10)t1.text="0"+sec2
else if(sec2>=10) t1.text=sec2
}
Второе условие if(sec2>=10) не сработает никогда, поскольку главное условие if(sec2<=9).
Опишите еще раз задачу. Какую роль играет кнопка, укажите также.
Возможно, вот решение, которое вы ищете:
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 сек., проиграется звук и появится надпись "Время".
softamore
25.01.2012, 23:46
Спасибо большое за помощь, только осталась одна проблема, звук (он довольно короткий) проигрывается раз за разом...
Да, недоглядел.
Замените последнее условие на:
if (deltaSec == 9)
{
delete sec;
t1.text = 'Время!'
zvuk1.start();
}
Дело в том, что после удаления sec здесь прекращается проверка и звук проиграется только один раз.
Проверка будет выполняться если выполняется условие if (sec), а оно будет истинным только после нажатия кнопки, когда определится переменная.
softamore
26.01.2012, 19:24
mooncar спасибо ещё раз огромное, теперь всё работает как надо...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.