Форум 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=139459)

Royerder 01.05.2010 19:09

Проблема с воспроизведением звука
 
Делаю будильник, так, для себя, и наткнулся на дону проблему. Она касается подгрузки звука из папки. Как я делаю:

— Кадр 1

Даю пользователю выбрать время, оно заносится в три динамических поля — день, час и минуты. Эти три поля присутствуют во втором кадре, за счет того, что во втором нет ключевого.

— Кадр 2

Пользователь кликает Ок и переходит на второй кадр, где отображаются системные часы, как заставка. Здесь у меня и возникла проблема, с воспроизведением звука. Пишу так:

Код AS1/AS2:

onEnterFrame = function () { //для того, что бы дата сверялась каждую секунду, а не один раз, при переходе на кадр
if (alarm_day == local_day && alarm_hours == local_hours && alarm_minutes == local_minutes { //как писал выше, каждую секунду сверяю установленное время с системным
var s:Sound = new Sound(); //создаю переменную с звуком
s.loadSound("sound.mp3", true); //подгружаю звук из папки
s.start(); //запускаю воспроизведение
}
}

Проблема, собственно, в том, что звук воспроизводится каждую секунду снова.

samana 01.05.2010 20:31

Дело в том, что проверка не перестаёт проверятся никогда, и каждые 25-30 раз в секунду опять и опять создается и запускается новый Sound в течении минуты.
Может поможет
Код AS1/AS2:

 delete onEnterFrame


mooncar 01.05.2010 20:49

Лучше так:
Код AS1/AS2:

var s:Sound = new Sound();
s.loadSound('sound.mp3', false); //загружаем заранее, чтобы в нужный момент не было задержки
 
this.onEnterFrame = checkTime;
 
function checkTime () {
        if (alarm_day == local_day && alarm_hours == local_hours && alarm_minutes == local_minutes) { //как писал выше, каждую секунду сверяю установленное время с системным
                delete this.onEnterFrame ;
                s.start();
        }       
}

Преимущество - все работает как вам надо, а если нужно опять "завести будильник", то , выставив ваше время, достаточно опять назначить функцию проверки строкой:
Код AS1/AS2:

this.onEnterFrame = checkTime;



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

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