Russian English
   Basic.net
Среда, 23.09.2020, 01:53
Меню сайта
Категории раздела
Basic [28]
У нас вы можете бесплатно скачать QBasic, VisualBasic, FreeBasic, GW-Basic.
QBasic [4]
Visual Basic [4]
GW-Basic [0]
Игры [1]
FreeBasic [1]
PowerBasic [1]
Облако тегов
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа
Главная » Файлы » Basic

Делаем музыкальный плеер в Visual Basic. Часть 4
Share |
27.07.2013, 16:03
Сейчас наш плеер может воспроизводить аудиофайлы и плейлисты с компьютера, а хотелось бы добавить возможность проигрывать свои любимые CD/DVD диски.

Шаг 13: размещение нужных компонентов.
Можно открывать нужный файл с диска обычным способом - вызвать специальное окно. Но как правила мы слушаем с дисков целые альбомы, а не отдельные песни, потому не хотелось бы прерываться и включать заново новую песню. Можно, конечно, программе составить плейлист всех записей на диске и сохранить его, и тогда уже воспроизводить сам плейлист.
Но мы поступим третьим способом - пользователь будет выбирать файл прямо на форме - в одном поле диск, а во втором папку. Рядом будет выводиться имя текущего файла, а переключение между ними производится кнопками Next и Pervious.

Итак, для этого размещаем DriveListBox, DirListBox и FileListBox (свойство Name оставим по-умолчанию), а также CheckBox (Name = Auto_stop, Caption = Auto Stop). Последний элемент - Чекбокс - служит для остановки воспроизведения по окончании текущей записи. Если в нем стоит галочка, то после окончания текущей записи на диске следующая воспроизводиться не будет, а если нет - воспроизведение продолжится. Кстати, почему бы такую не сделать в плейлисте?

Шаг 14: составление плейлиста диска; воспроизведение
Ну для начала пропишем, что будет происходить при нажатии на наши компоненты:

Код Visual Basic
1 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Private Sub Dir1_Change() 
    File1.Path = Dir1.Path
End Sub
 
Private Sub Drive1_Change()
Dim DriveNumber As Integer
Dim SongNumber As Integer
    On Error GoTo ErrorHandler
    Dir1.Path = Drive1.Drive
    On Error GoTo 0
    If Player.cdromCollection.Count Then
        For DriveNumber = 0 To Player.cdromCollection.Count - 1
            If UCase$(Trim$(Player.cdromCollection.item(DriveNumber).driveSpecifier)) = UCase$(Trim$(Drive1.Drive)) Then
                If Player.cdromCollection.item(DriveNumber).PlayList.Count Then
                    Player.currentPlaylist = Player.cdromCollection.item(DriveNumber).PlayList
                End If
            End If
        Next DriveNumber
    End If
    AutoStop
ErrorHandler:
On Error GoTo 0
End Sub
 
Private Sub File1_Click()
    If Player.currentPlaylist.Count Then
        Player.Controls.playItem Player.currentPlaylist.item(File1.ListIndex)
    End If
    AutoStop
End Sub

Здесь нам встретилась процедура AutoStop:

Код Visual Basic
1 
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub AutoStop() 
    If Auto_stop.Value Then
        Do
            DoEvents
            Player.Controls.stop
            Select Case Player.playState
                Case 0, Is > 3
                    Exit Sub
                Case 1
                    Exit Do
            End Select
        Loop
    End If
End Sub

И последние - процедура Player_MediaChange, которая, как понятно, будет вызываться при смене файла:

Код Visual Basic
1 
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Player_MediaChange(ByVal item As Object) 
Dim c As Integer
    If Player.currentPlaylist.Count Then
        For c = 0 To Player.currentPlaylist.Count - 1
            If Player.Controls.currentItem.Name = Player.currentPlaylist.item©.Name Then
                If File1.ListIndex <> c Then
                    File1.ListIndex = c
                    AutoStop
                End If
                Exit For
            End If
        Next c
    End If
End Sub

Да, вот для воспроизведения нами не будет использована процедура OpenFile, а потому лучше сделать кнопку Open Disk. Все размещённые в 13 шаге объекты нужно сделать невидимыми изначально, чтобы они появлялись при нажатии на эту кнопку.

Получать теги можно лишь с MP3-файлов. Например на тестируемом мною диске они были формата CDA, так что получение тегов из файла лучше отключить. Либо сделать проверку на формат файла. Либо добавить поддержку других форматов.

Не забудьте протестировать прокрутку записи - вдруг какие-то форматы не будут работать, т.е. у них не получается определить время.
Категория: Basic | Добавил: Admin
Просмотров: 2789 | Загрузок: 0 | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Наш опрос
Какую версию Basic вы предпочитаете?
Всего ответов: 2028

© Basic.ucoz.net, 2020