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

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







 

Урок 4. Завершающий штрих - слайдер прокрутки трека

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

Но вернемся пока к объекту HotSpotMouse и назначим ему необходимые действия в окне сценариев. На вкладке Mouse Down напишите следующее:

handleoff = 5
posmin = 197
posmax = 390
ypos = 31
mouseup=FALSE
ScriptTimer("TimerA=MoveTrackSlider","50")

Здесь определяются значения, о которых мы говорили выше и которые будут использоваться в скриптах для вычислений (цифры, естественно, у вас будут свои). А также, пока мышь нажата, но еще не отпущена, будет запущен скрипт MoveTrackSlider. Он, в свою очередь, включит показ "призрака" слайдера и переместит его на позицию мыши (об этом ниже).

На вкладке Mouse Up напишите такой сценарий:

mouseup = TRUE
Hide("tracksldr_alpha")
MoveObject("tracksldr","x,ypos")
AudioRewind("(x-posmin)*((CBK_TotalSec/100)*0.5181)+1","")

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

Однако это время нужно еще вычислить. Как? Да очень просто. Время текущей позиции относится к общему времени песни так же, как координата текущей позиции трека относится к общей длине прокрутки трека. Точнее, не координата текущей позиции, а разница между ней и минимальной позицией. Попробую объяснить понятнее. Если длина дорожки перемещения слайдера у вас нарисована в 100 точек, а слайдер переместился на середину, то воспроизведение нужно переместить в точку, равную 0,5 от общего времени воспроизведения. Если слайдер находится в десяти точках от правого края, то общее время нужно умножить на 0,9, а если в десяти от левого - то на 0,1. А общее время извлекается из объекта CBK_TotalSec, вот для чего он нужен в проекте.

Поэтому формула для вычисления выглядит так: разница между текущей и минимальной позицией слайдера делится на сто и умножается на общее время звучания. Ну а если длина дорожки не сто точек, то вводится поправочный коэффициент - в скрипте, показанном выше, это число 0.5181. Чтобы его рассчитать, нужно число сто разделить на разницу между posmax и posmin.

Теперь откройте окно сценария скрипта AutoMoveTrackSldr и скопируйте туда следующий скрипт (не забудьте изменить числовые значения на свои!):

if (CBK_TimeSec < CBK_TotalSec) then
Show("tracksldr")
MoveObject("tracksldr","197+((100/(CBK_TotalSec))/0.5181)*(CBK_TimeSec)),OBJECTY(tracksldr)")
ScriptTimer("AutoMoveTrackSldr","500")
end
if (CBK_TimeSec = CBK_TotalSec) then
MoveObject("tracksldr","197, OBJECTY(tracksldr)")
Hide("tracksldr")
end

Смысл сценария легко понять. Если текущее время звучания меньше общей продолжительности звучания песни (первая строка сценария), то включается показ слайдера (вторая строка) и он перемещается на позицию согласно текущему времени (третья строка). Дальше выполняется запуск этого же скрипта через 500 мс, то есть через каждые полсекунды слайдер будет перемещаться а новую позицию. В следующем условии сценария определяется, что если текущее время стало равно общему времени (значит, песня закончилась), то слайдер переносится на начальную позицию и вновь делается скрытым.

Всё просто и гениально (заслуга не моя - авт.)

Назад          Дальше



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





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



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