Урок по включению/выключению звука в Flash
В этом уроке речь пойдёт о том, как организовать плавное включение/выключение звука во Flash. Опять же, просто нужно знать, какие методы использовать в вашей флешке. Основными методами урока будут getVolume() и setVolume(number), с помощью которых можно узнать текущее и установить новое значение громкости для Sound объекта в Flash.
Как же это всё организовать в флешке?
Для начала давайте разберём в двух словах, как это всё работает. Первым делом нужно понять, что «плавное» — это означает не мгновенное, а постепенное изменение какого-то свойства, в данном случае громкости. Таким образом, нам нужно будет не сразу изменить значение громкости на 0, если мы выключаем звук, а создать функцию, которая бы при вызове уменьшала значение громкости на какое-то число, и вызывать эту функцию до того момента, пока громкость не упадёт до нуля. Я не буду разбирать в этой статье, как во Flash создаются Sound объекты, т.к. об этом вы можете прочитать в статье «Учимся работать со звуком».
Необходимые функции:
function soundOn_func(varDelta:Number) {
_root.s_sound.setVolume(_root.s_sound.getVolume()+varDelta);
if (_root.s_sound.getVolume()>=100) {
clearInterval(_root.sound_int);
_root.s_sound.setVolume(100);
}
}
1. soundOn_func — имя функции, которая будет постепенно увеличивать громкость звука в Flash;
2. varDelta — число, на которое каждый раз при запуске функции будет увеличиваться громкость Sound объекта. Конечно, его можно было бы задать и вручную без всяких переменных, но такой способ, когда в теле функции прописывают необходимую переменую и потом с ней работают, гораздо более гибкий;
3. setVolume(_root.s_sound.getVolume()+varDelta) — здесь мы непосредственно прибавляем к текущему значению громкости переменную varDelta. setVolume(number) — это функция, которая устанавливает значение громкости звука для Sound объекта в Flash. Функция getVolume() возвращает нам текущее значение громкости звука. Запомните, что громкость может изменяться от 0 до 100, где 0 — звук выключен полностью, а 100 — максимальная громкость. Так же нужно запомнить, что если громкость будет ниже 0, то звук будет слышен, причём, чем дальше от 0 будет значение, тем громче он будет.
Вот и всё, теперь нам нужно просто создавать интервал, вызывающий эту функцию каждый раз, когда мы захотим плавно увеличить громкость. Делается это примерно следующим образом:
_root.sound_int = setInterval(_root.soundOn_func, 50, 10);
1. _root.sound_int — переменная интервала, по которой потом к можно будет обращаться к интервалу;
2. _root.soundOn_func — имя функции, которая будет вызываться с определённым интервалом;
3. 50 — время, через которое будет вызываться функция. Указывается в миллисекундах (0.001 сек.). Означает, что функция будет вызываться 20 раз в секунду (1000/50=20);
4. 10 — передаваемая в вызываемую функцию переменная. У нас это, если вы ещё не забыли, переменная varDelta.
Вот, собственно, всё и готово к использованию, если у объекта s_sound громкость будет меньше 100, то при вызове функции его громкость будет постепенно увеличится, если громкость будет равна 100, то громкость будет постепенно уменьшаться.
Сама флешка » | Архив » |
пригодится)
Странно но почему не работает если флешку аттачить?
Скорее всего потому, что в примере, который выложен на сайте пути к звукам и функциям прописаны через _root, а когда флешку подгружают, её _root становится ссылкой на _root клип-контейнера, а не подгружаемой флешки. Почитайте в хелпе про _lockroot, возможно это поможет решить проблему.
Не я пытаюсь переделать на относительный путь(через this) а _lockroot не подходит в данном случае