Урок 2. Простой MP3-плеер - это не очень
просто
Предупреждаю, что эта страница будет очень
скучной, но наберитесь терпения и пройдите ее до конца. А в
качестве награды вас ждет непередаваемое ощущение радости
творчества! (А уж если вы совсем нетерпеливы, можете посмотреть, что у нас
получится в итоге всей работы).
Прежде всего реанимируем наш плеер, чтобы
убедиться в его работоспособности.
Сначала зайдите в свойства плейлиста, нажмите
кнопку "Действие" и напишите там такой скрипт (скрипт нужно
написать на вкладке Double Click):
ListBoxGetSelectedItems("SongList","Items$,ItemsNum$,#,NumItems") for
i=1 to NumItems t$ = GETARRAYITEM(Items$,#,i) t$ = t$ +
'_' numitem$ = GETARRAYITEM(ItemsNum$,#,i) numitem =
VAL(numitem$) SongListPlay("numitem") next i
Ничего не поделаешь, придется пока обойтись без
объяснений. Просто без этого скрипта вы не сможете запускать
проигрывание файлов по двойному щелчку в плейлисте. Сразу
оговорюсь, что скрипт этот, как и все последующие кроме тех,
что мы будем создавать сами, написан автором программы Multimedia Builder (Roman Voska).
Кроме того, чтобы плейлист работал, в проекте
должны присутствовать еще два объекта - это текстовые объекты
с метками CBK_NumInList и CBK_CurItemList.
Четыре текстовых объекта с CBK-метками
у нас в проекте уже присутствуют: два из них служат для вывода
времени, а два - для показа информации о песне. Как можно
догадаться из названия меток, указанные в начале абзаца
объекты выводят информацию об общем количестве загруженных
песен (файлов) и о номере текущей проигрываемой
песни. Эти два объекта будут в дальнейшем использованы в
качестве параметров в некоторых скриптах, и поэтому их
отсутствие в проекте сделает скрипты неработоспособными.
Итак, создайте два текстовых объекта, присвойте
им указанные метки и... положите пока где-нибудь в стороне от
окна проекта.
Теперь зайдём в свойства кнопки, предназначенной
для загрузки мр3-файлов. В области назначения действий мы
видим, что единственное действие, назначенное этой кнопке -
Audio Open. Отмените это действие, потому-что
вместо него мы напишем специальный скрипт. Откройте окошко
скриптов. Здесь есть две закладки: Mouse
Up и Mouse
Down. На закладке Mouse Up
напишите следующий скрипт (можно скопировать его прямо
с этой страницы):
AudioOpen("") ListBoxAddItem("SongList","RESET") ListBoxAddItem("SongList","<List>") CurListItem
=
CBK_CurItemList ListBoxDeselectItem("SongList","-1") ListBoxSelectItem("SongList","CurListItem") RunScript("SongListStatusScr")
А на закладке Mouse Down -
только одну строчку:
ListBoxAddItem("Playlist","")
Из текста скрипта можно понять, что он
обеспечивает открытие аудио-файлов и загрузку заголовков в
плейлист. Видно также, что в этом скрипте уже используется имя
объекта CBK_CurItemList, который мы предусмотрительно
создали.
А сейчас проверьте работу вашего проекта.
Откройте несколько мр3-файлов, и... о чудо! - они загрузились
в плейлист! Попробуйте запускать проигрывание разных песен
путем двойного щелчка мышью по их названием в плейлисте.
Срабатывает? Хорошо, это уже результат. Однако, после
окончания текущей песни, когда автоматически начинается
проигрывание следующей, в плейлисте не происходит
"перескакивание" выделения на новую песню, а в заголовок
по-прежнему не выводится информация. И индикаторы времени
снова затихли...
Здесь самое время рассказать вам еще об одном
объекте типа CBK,
который предусмотрели разработчики программы. Это сценарий,
который должен иметь метку CBK_MP3EOF. Если на
странице проекта имеется сценарий с таким именем, он всегда
будет запускаться после окончания проигрывания текущего
мр3-файла. Так вот, чтобы всё заработало, поместите в вашем
проекте скрипт под названием CBK_MP3EOF следующего
содержания:
MaxNum =
CBK_NumInList CurListItem = CBK_CurItemList if
(WhatSongStat$ = 'next') then WhatSongStat$ =
'' CurListItem = CBK_CurItemList + 1 if (CurListItem
> MaxNum) then CurListItem =
MaxNum Return() end SongListPlay("CurListItem") ListBoxDeselectItem("SongList","-1") ListBoxSelectItem("SongList","CurListItem") Return() end if
(WhatSongStat$ = 'prev') then WhatSongStat$ =
'' CurListItem = CBK_CurItemList - 1 if (CurListItem
< 1) then CurListItem =
1 Return() end SongListPlay("CurListItem") ListBoxDeselectItem("SongList","-1") ListBoxSelectItem("SongList","CurListItem") Return() end if
(CurListItem = MaxNum) then Return() end CurListItem
= CBK_CurItemList +
1 SongListPlay("CurListItem") ListBoxDeselectItem("SongList","-1") ListBoxSelectItem("SongList","CurListItem")
Пока никаких комментариев по поводу этого скрипта
я давать не буду - для этого нужно сначала тщательно изучить
команды, доступные в Multimedia Builder.
Со временем, постепенно изучая эти команды и язык скриптов,
вы сами начнете все понимать. А пока наша главная задача -
сделать работающий мр3-плеер.
Ну что, создали скрипт? А теперь посмотрите, как
волшебным образом изменилось поведение нашего плеера! После
окончания одной песни строчка выделения в плейлисте сама
перескакивает на следующую, выводятся ID3-тэги и послушно отсчитывается время!
Поблагодарите себя за терпение и усидчивость, а
меня - за то, что открыл вам секреты - и читайте дальше! Будет
уже не так скучно. (Похоже, что эта страница оправдала
название статьи :)) -
авт.)
Назад
Дальше
|