Урок 3. Как сделать регулятор
громкости
Как всегда, сначала я вас огорчу. Запустите
проверку вашего проекта (клавиша F5).
Установите громкость на уровне, например, 75%. Выйдите из
режима проверки (Esc). Запустите
проверку снова. Ну, что? Установлена ли громкость на 75%, как
вы ее оставили? Нет, регулятор находится слева, а значение
уровня выдает ноль (хотя на самом деле в системе осталась
громкость в 75% - в этом можно убедиться, если открыть
стандартный системный регулятор). Значит, это дело нам надо
поправлять.
Давайте разберемся. Перемещает движок регулятора
на нужную позицию скрипт ChangeVolume. Он же и
выставляет ее числовое значение. Однако скрипт будет запущен
лишь тогда, когда вы щелкнете по области HotSpotMouse -
она-то и запускает скрипт. При старте же проекта "никто не
знает", куда надо переместить движок и какое значение вывести
в объект vlevel. Так чему же
удивляться?
"Знаем, знаем, что нужно делать! - скажете вы. -
Надо в скрипте старта страницы написать RunScript("ChangeVolume"). И всё
установится, как надо." Так, да не так. Дело в том, что нужный
нам скрипт хоть и запустится, но будет работать неправильно.
Почему? Да потому, что он "не будет знать", какими величинами
оперировать в качестве posmin,
posmax и ypos, и
приравняет все их к нулю, в результате чего слайдер
"прилепится" к верхнему левому углу окна проекта. А величины
эти посылаются, как вы помните, скриптом объекта
HotSpotMouse.
Поэтому надо для старта проекта написать свой
скрипт, который бы устанавливал нужное положение вещей. Как
всегда, я его приведу ниже, а потом разберем:
volume =
CBK_Volume volume = 10 +
(volume) MoveObject("Volume","volume,4") VolLev=CBK_Volume VolLev$
= CHAR(VolLev) +
'%' LoadText("vlevel","VolLev$")
Первая строка. Вводится числовая переменная,
значение которой извлекается из объекта CBK_Volume (объект сей всегда точно
знает величину громкости, установленную в системе). Вторая
строка. К вышеуказанному значению прибавляется еще десять.
Число 10 в моем проекте - не что иное, как величина posmin. Чтобы не вводить здесь
переменную, это значение указано сразу в числовом виде (в
вашем проекте будет другое, известное вам, число). Третья
строка сценария. Перемещается объект слайдера на нужную
позицию, где координата по горизонтали - только что
рассчитанная выше, а по вертикали - просто число четыре (у
меня. У вас своё!). В последних трех строчках выполняются
указания по выведению числового значения громкости. Это мы уже
знаем.
Вот и всё. Теперь при старте проекта и положение
движка, и числовое значение громкости будут соответствовать
тому, что установлено в системе.
Мы сделали регулятор, в котором
громкость управляется перемещением движка-слайдера. А нельзя
ли сделать, чтобы вместо движка уровень громкости отображался
как бы заливкой части области регулирования, как показано на
рисунке слева?
Можно, и это совсем нетрудно. Давайте вспомним
команду MoveObject. В качестве параметров этой команды
указывается четыре значения: первые два задают координаты
точки перемещения (и это у нас используется при перемещении
слайдера), а вот вторые две задают новый размер объекта
после перемещения. Теперь представьте себе, что перемещаемым
объектом является прямоугольник ярко-зеленого цвета, что на
рисунке. Да ведь нам его и перемещать-то никуда не нужно (в
самом деле, его верхний левый угол всегда остается на месте)!
Достаточно только изменять его размер.
Итак, в качестве объекта Volume
нарисуйте прямоугольник нужного цвета, разместите его
аккуратно на полосе регулировки так, чтобы он занял начальную
позицию, и сразу установите нужную высоту этого объекта - ее
значение нам понадобится в скрипте. Горизонтальный размер
прямоугольника - его протяженность в длину - никакого значения
не имеет, так как этот размер будет устанавливаться скриптом.
А вот в скрипте ChangeVolume придется изменить строчку,
касающуюся перемещения объекта Volume. Теперь
она будет выглядеть так:
MoveObject("Volume","(posmin,ypos,VolLev,7")
Как видите, объект Volume
никуда не перемещается (значения величин posmin и ypos - постоянны), изменяется лишь его
размер. Длина по горизонтали устанавливается равной значению
громкости, а высота по вертикали - та, что вы задали объекту
сами (у меня - 7). Теперь при регулировании громкости мышью
зеленая полоса приятно растягивается до нужной позиции.
Придется внести небольшие изменения
соответственно и в скрипт старта страницы. Думаю, вы уже
справитесь с этим сами. А готовый образец только что
описанного регулятора вы сможете скачать в конце этой статьи.
Назад
Дальше
|