Управление звуком
Теперь создадим в этом символе новый слой и поместим туда polzunok_MC_volume. Слой с ползунком должен быть выше слоя со шкалой. Поставим ползунок в центре шкалы и назначим ему такое действие:
onClipEvent(enterFrame) {
root.zvuk.setVolume(
this
.x);
}
Этим мы добьемся того, что звук будет иметь значение, соответствующее координате х ползунка. Теперь переходим на главную сцену и вставляем туда символ shkala_volume. Вот мы и создали элемент управления громкостью звука.
Теперь организуем балансировку звука между левым и правым динамиками. Для этого создадим символ-кнопку с названием polzunok_pan и нарисуем там ползунок, затем создадим символ типа Movie Clip с именем polzunok_MC_pan поместим туда наш polzunok_pan. Зададим ему действие:
on
(press) {
startDrag(
this
,
false
);
}
on
(release) {
stopDrag(
-
100
,
0
,
100
,
0
);
}
Теперь создадим еще один символ типа Movie Clip с именем shkala_pan. Нарисуем там нашу шкалу в виде прямоугольника с параметрами, как показано на рисунке:
Рис. 633. Задание координат и размеров шкалы балансировки звука
В этом же символе создадим еще один слой и поместим его выше текущего. В этом слое расположим ползунок polzunok_MC_pan и зададим для него следующее действие:
onClipEvent(enterFrame) {
root.zvuk.setPan(
this
.x);
}
Теперь переходим на главную сцену и вставляем в нее шкалу балансировки звука shkala_pan. Посмотрите мультфильм и попробуйте изменить положение ползунков. Если ошибок нет, то все будет работать.
Однако у нас нет цифрового отображения громкости и баланса звука. Давайте разработаем и такой сервис. На главную сцену вставим два динамических текстовых поля. Одно для отображения громкости, другое – для баланса. Назовем их vol и pan соответственно. Сначала займемся полем vol.
Выделим символ shkala_volume и откроем палитру Action для нашего ползунка. Добавим к уже имеющемуся следующий код:
s
=
new
Sound(zvuk);
_root.vol
=
s.getVolume();
Таким образом, у нас должно получиться следующее:
onClipEvent(enterFrame) {
root.zvuk.setVolume(
this
._x);
s
=
new
Sound(zvuk);
root.vol
=
s.getVolume();
}
Теперь пользователь может видеть цифровое значение громкости звука. Займемся организацией цифрового отображения баланса. Для этого перейдем к символу shkala_pan и добавим к его действиям следующий код:
s
=
new
Sound(zvuk);
root.pan
=
s.getPan();
В результате должно получиться:
onClipEvent(enterFrame) {
root.zvuk.set Pan(
this
-
_x);
s
=
new
Sound(zvuk);
root.pan
=
s.getPan();
}
Теперь пользователь получает сведения относительно баланса звука. Однако когда ползунок переходит на левую часть шкалы, мы видим отрицательные числа. Обычно в подобных программах отображаются положительные числа и буква "L" или "R". Давайте попробуем сделать так же. Для этого в символе shkala_pan в палитре Actions для ползунка немного изменим существующий код. После замены должно получиться:
onClipEvent(enterFrame) {
_root.zvuk.setPan(
this
._x);
s
=
new
Sound(zvuk);
if
(
this
._x
<
0
) {
_root.pan
=
-
(s.getPan())
+
"Left"
;
}
else
if
(
this
._x
>
0
) {
_root.pan
=
s.getPan()
+
"Right"
;
}
else
if
(
this
._x
=
=
0
) {
_root.pan
=
s.getPan();
}
}
Здесь мы поставили условие, что если значение координаты х ползунка меньше нуля (т. е. баланс смещается влево), то в поле pan возвращается значение с минусом (отрицательное число с минусом есть положительное число). Кроме того, к Цифровому значению приписывается строка Left. А если баланс смещается вправо, то все остается как есть и еще приписывается Right. Если же значение координаты х равно нулю, то вообще ничего не приписывается. Теперь мы имеем более привычную форму отображения баланса. Таким же способом можно сделать, чтобы при минимальной громкости выводилось бы, например "OFF" или "Выкл.", а при максимальном значении – "МАХ". Для этого нужно лишь заменить код для ползунка в символе shkala_volume на следующий:
_root.zvuk.set Volume(
this
._x);
s
=
new
Sound(zvuk);
if
(
this
._x
=
=
0
) {
root.vol
=
"Выкл."
;
}
else
if
(
this
._x
=
=
100
) {
_root.vol
=
"MAX"
;
}
else
{
_root.vol
=
s.getVolume();
}