Clubrus - это адаптация Инета под простого российского пользователя!

Реклама в Интернет & Все кулички
Добро пожаловать !
Добавить в избранное







 

Урок 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). Теперь при регулировании громкости мышью зеленая полоса приятно растягивается до нужной позиции.

Придется внести небольшие изменения соответственно и в скрипт старта страницы. Думаю, вы уже справитесь с этим сами. А готовый образец только что описанного регулятора вы сможете скачать в конце этой статьи.

Назад          Дальше



 URL: http://clubrus.kulichki.net E-mail: Clubrus 





Новая версия этого сайта CLUBRUS.SU



Рейтинг ресурсов УралWeb Rambler's Top100