|
2D-программирование Вопросы, касающиеся двумерного программирования |
18.09.2005, 17:51
|
#1
|
|
Вот у меня вопросик появился - сделать следущим образом:
есть папка - music, в ней храниться определенное количество файлов в .mp3 формате(количество меняеться )Так вот, как сделать, чтобы Блитц открывал все что там есть, и проигрывал в случайном порядке?
|
|
|
18.09.2005, 18:07
|
#2
|
|
Тебе нужно посмотреть описание использования команды NextFile$ в хелпе или >здесь<.
|
|
|
18.09.2005, 18:21
|
#3
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
SeedRnd(MilliSecs())
Global music_channel%
;Global counter
Function SelectRandMusic(DIR$)
Local counter%=0
Local channel
Local dir_h%=ReadDir(DIR$)
While True
*file$=NextFile$(dir_h)
*If Upper$(Right(file$,3))="MP3"
* counter=counter+1
*EndIf
*If file$="" Exit
Wend
CloseDir dir_h
Print "files="+counter
Local iR%=Rand(1,counter%)
If Not counter Return False
counter=0
dir_h%=ReadDir(DIR$)
While True
*file$=NextFile$(dir_h)
*If Upper$(Right(file$,3))="MP3"
* counter=counter+1
* If counter%=iR
* *Print "select - "+IR+" = "+file$
* *channel=PlayMusic(DIR$+"\"+file$)
* Exit
* EndIf
*EndIf
Wend
Return channel
End Function
SelectRandMusic("music")
While Not KeyHit(1)
Wend
End
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
20.09.2005, 15:20
|
#4
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Замечание: если содержимое папки МЬЮЗИК меняется только ДО (после) запуска игры, то лучше сделать массив, в котором хранить ПУТИ к файлам и с ним работать (как путь найти impersonalis разъяснил выше).
А то перебирать ВСЕ файлы поновой, чтоб что-то выбрать....
|
(Offline)
|
|
20.09.2005, 18:50
|
#5
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Originally posted by Жека@Sep 20 2005, 01:20 PM
Замечание: если содержимое папки МЬЮЗИК меняется только ДО (после) запуска игры, то лучше сделать массив, в котором хранить ПУТИ к файлам и с ним работать (как путь найти impersonalis разъяснил выше).
А то перебирать ВСЕ файлы поновой, чтоб что-то выбрать....
|
Не только по причине изменеия кол-ва файлов я использвоал этот алгоритм - кэшировать фоновую музыку это очччень накладно и неоправдано. На то пошло - надо юзать не массив, а типы.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
20.09.2005, 19:12
|
#6
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Если файлов много, то возможны задержки при вызове функции.
Или нет?
Типы... Массив удобнее: PlayMysic (musicList$(Rand(MAX_KOLVO_MUSIC)))
Пусть Dizels использует типы, или весь твой код, а я буду массив!
|
(Offline)
|
|
20.09.2005, 21:44
|
#7
|
Дэвелопер
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений (для 164 пользователей)
|
Как насчет такого варианта.
Позволяет избежать тормозов в главном цикле цикле и знаменитых глюков команды PlayMusic за счет повышения времени загрузки.
Dir$="D:\KrutajaGama\Music"
CheckDir=ReadDir(Dir$)
File$="*"
NFiles=0
While File$<>""
File$=NextFile$(CheckDir)
If FileType(Dir$+"\"+File$) = 1 Then NFiles=NFiles+1
Wend
CloseDir CheckDir
Dim Music(NFiles)
CheckDir=ReadDir(Dir$)
File$="*"
NFile=0
While File$<>""
File$=NextFile$(CheckDir)
If FileType(Dir$+"\"+File$) = 1 Then Music(NFile)=LoadSound(Dir$+"\"+File$)
Wend
CloseDir CheckDir
While Not KeyHit(1)
If ChannelPlaying(ChnlMusic)=0 then ChnlMusic=PlaySound(Music(Rnd(NFiles)))
Wend
End
|
(Offline)
|
|
20.09.2005, 22:06
|
#8
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Diplomat, а сколько памяти ест музыка? Столько же, сколько на ХДД? Если у меня 20 треков, то это будет весить около 50-70 мб, и все это в память толкать?!
Не знаю как у вас, а у меня команда ChannelPlaying() тормозит, поэтому я вызываю ее 1 раз за 2-5 секунд, чаще смысла нет.
Тогда все ок, а если каждый раз при проходе цикла звать, то тормозит
Я массив так же "делаю", но вместо хендлов загоняю пути к файлам...
|
(Offline)
|
|
20.09.2005, 22:21
|
#9
|
Дэвелопер
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений (для 164 пользователей)
|
это будет весить около 50-70 мб, и все это в память толкать?!
|
Да, плата за скорость работы и гарантию отсутствия глюков с PlayMusic на другой машине...
А насчет памяти- то 70 метров- это перегиб. Ну пусть 5 треков МР3- это 50Мб максимум... При обьеме оперативы в 1Гиг (ну или даже 256Мб) это условие перестает играть каку-либо роль...
Другое дело, что длинный трек может грузиться 1-5 секунд, а это уже серьезный недостаток...
|
(Offline)
|
|
20.09.2005, 22:23
|
#10
|
Администратор
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений (для 996 пользователей)
|
Originally posted by Жека@Sep 20 2005, 08:06 PM
а сколько памяти ест музыка?
|
музыка подвергается раскодировке в нормальный для звуковой карты формат, а именно ADPCM wav... и проверить сколько это будет весить можно например виндосовским менеджером задач
__________________
Как минимум я помог многим (с)
|
(Offline)
|
|
20.09.2005, 22:33
|
#11
|
|
видимо воспроизводить потоково несудьба :o
|
|
|
20.09.2005, 22:47
|
#12
|
Администратор
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений (для 996 пользователей)
|
Originally posted by jimon@Sep 20 2005, 08:33 PM
видимо воспроизводить потоково несудьба :o
|
а ты что, хочешь, чтоб игра еще тормозила из-за раскодировки??
по-моему было-бы глупо...
__________________
Как минимум я помог многим (с)
|
(Offline)
|
|
20.09.2005, 23:17
|
#13
|
|
мдя... когда ты слушаеш winamp (или че там еще) и устанавливаеш прогу , сидиш в аське , мучаеш paint то у тебя музычка тормозит ?!
есть такое заветное слово - буферизация
притом я же неговорил декодировать музыку в блице - для етого есть нормальные либы bass.dll например )
|
|
|
20.09.2005, 23:20
|
#14
|
Администратор
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений (для 996 пользователей)
|
__________________
Как минимум я помог многим (с)
|
(Offline)
|
|
21.09.2005, 08:45
|
#15
|
|
для раскодировки надо примерно 1-3 метра озу... может даже меньше (смотря какой буфер поставиш)
|
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
моя музыка |
Coks |
Личное творчество |
0 |
02.03.2008 12:11 |
Часовой пояс GMT +4, время: 00:05.
|