|
2D-программирование Вопросы, касающиеся двумерного программирования |
21.09.2005, 15:43
|
#16
|
Администратор
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений (для 996 пользователей)
|
Есть еще такая прога Cool Edit 2000 называется, я ей обычно смотрю, там когда файл открываешь, тыкаешь на название файла, а он тебе всю поднаготную о нем в том числе и размер в "распакованном" виде.
__________________
Как минимум я помог многим (с)
|
(Offline)
|
|
21.09.2005, 17:07
|
#17
|
|
вот непонимаю я тебя - зачем грузить весь файл в память ? может еще все текстуры игры загрузим в память а использовать будем только те что надо :o
ps. смотри атач
|
|
|
22.09.2005, 10:33
|
#18
|
Нуждающийся
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
Я использовал код, который дал impersonalis, он меня вполне устраивает, но вот досада, файл выбираеться, потом играет, а вот после него тихо как в танке, а надо, чтобы следущий файл играл(тоже случайный).
|
(Offline)
|
|
22.09.2005, 11:19
|
#19
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Тихо только в танке с выключенным двигателем!
С работающим - очень наоборот
С его кодом все нормально, ты присмотрись внимательнее к вызову команды PlayMusic, и обнаружишь переменную channel, в которую записан результат вызова плеймьюзик.
В главном цикле проверяешь состояние канала командой ChannelPlaying (channel). Если получаешь от нее НОЛЬ, то заново зовешь функцию SelectRandMusic
Еще сделай channel глобальной переменной.
|
(Offline)
|
|
28.09.2005, 11:10
|
#20
|
Нуждающийся
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
Что-то у меня не получилось, подскажите:
SeedRnd(MilliSecs())
Global music_channel%
Global counter
Global channel
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
ChannelPlaying (channel) If channel=0 Then
SelectRandMusic("music")
|
(Offline)
|
|
28.09.2005, 13:46
|
#21
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Вот рабочий пример:
SeedRnd(MilliSecs())
Global counter
Global channel
While Not (KeyHit (1))
If ChannelPlaying (channel) = 0 SelectRandMusic("music")
Wend
End
Function SelectRandMusic(DIR$)
Local counter%=0
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
Изменения:
1. Сделал проверку играет ли щас муза или нет, если нет, то заново запускаем
2. ЛОКАЛЬНУЮ переменную channel удалил к чертям! Значение локальных переменных ТЕРЯЕТСЯ при выходе из функции.
|
(Offline)
|
|
28.09.2005, 14:41
|
#22
|
Нуждающийся
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
Все хорошо, вот только проблемка, теперь все играет, музыка меняеться, только вот игра не загружаеться Я end в начале убрал, но все равно проблема осталась!
|
(Offline)
|
|
28.09.2005, 22:33
|
#23
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
2 Жека:
channel Локальна в теле функции, но её значение возвращается через return - так что, ради каких чертей ты её убрал?
А вот юзание глобальных переменных ( ну уж по крайней мере - здесь) - плохой стиль.
SeedRnd(MilliSecs())
While Not (KeyHit (1))
If ChannelPlaying (channel) = 0 SelectRandMusic("music")
Wend
End
Function SelectRandMusic(DIR$)
Local counter%=0
local channel%=0
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
2 Dizels:
не понял - как это: музыка играет,а игра не грузится?
надо полагать - так:
вычлени цикл из пример Жеки в функцию а-ля:
Function UpdateMusic(channel)
If ChannelPlaying (channel) = 0 channel=SelectRandMusic("music")
return channel
End Function
и просто где-нибудь в главном цикле твоей программы (не мудурствуя лукаво - перед RenderWorld) напиши вызов приведённой выше ф-ции
;.....
channel=UpdateMusic(channel)
;....
RenderWorld
И вот теперь уже позаботься об области видимости переменной channel -
либо объяви её перед главным циклом
либо уж пихай в глобал
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
28.09.2005, 22:39
|
#24
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Кстати после описанных манипуляций - нигде вызво функции SelectRandMusic прописывать необязательно - во время выполнения игры программа на первом же кадре обнаружит отсутствие фоновой музыки и выполнит необходимые действия
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
29.09.2005, 08:07
|
#25
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Ага, зря зарезал, на Return не обратил внимания...
|
(Offline)
|
|
07.10.2005, 01:09
|
#26
|
Нуждающийся
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
Заранее прошу прощения за мою тупость, вот код, который я вставил, согласно вашим высказываниям:
SeedRnd(MilliSecs())
Function UpdateMusic(channel)
If ChannelPlaying (channel) = 0 channel=SelectRandMusic("music")
Return channel
End Function
Function SelectRandMusic(DIR$)
Local counter%=0
Local channel%=0
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
channel=UpdateMusic(channel)
Объясните, не как не пойму
|
(Offline)
|
|
07.10.2005, 01:10
|
#27
|
Нуждающийся
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
Остаеться начальная проблема:проигрываеться обин файл, а дальше тишина.
|
(Offline)
|
|
07.10.2005, 21:28
|
#28
|
Нуждающийся
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
???Подскажите!Или если я надоел с этим вопросом, то так и скажите
|
(Offline)
|
|
07.10.2005, 21:57
|
#29
|
|
А ты эту строчку
channel=UpdateMusic(channel)
в основном цикле пишешь?
|
|
|
07.10.2005, 22:04
|
#30
|
Нуждающийся
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений (для 0 пользователей)
|
Ну вроде да, посмотри выше - самая последняя сторчка кода
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
моя музыка |
Coks |
Личное творчество |
0 |
02.03.2008 12:11 |
Часовой пояс GMT +4, время: 11:38.
|