![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Зацикливание в fmod.
@!!ex_ © (2007-06-22 13:34:00)Ситуация: нужно зациклить музыку. Делаю так:
if Menu then begin
if (MenuMusic<>nil) then begin
if (not FSOUND_IsPlaying(MenuMusicChannel)) then
MenuMusicChannel:=SndLib.PlaySound(MenuMusic,Config.MusicVolume);
SndLib.SetSoundVolume(MenuMusicChannel,Config.MusicVolume);
end;
if (GameMusic<>nil) and FSOUND_IsPlaying(GameMusicChannel) then
SndLib.Stop(GameMusicChannel);
end
else begin
if (MenuMusic<>nil) and FSOUND_IsPlaying(MenuMusicChannel) then
SndLib.Stop(MenuMusicChannel);
if (GameMusic<>nil) then begin
if (not FSOUND_IsPlaying(GameMusicChannel)) then
GameMusicChannel:=SndLib.PlaySound(GameMusic,Config.MusicVolume);
SndLib.SetSoundVolume(GameMusicChannel,Config.MusicVolume);
end;
end;
На моем компе все работает замечательно.
Приношу на работу, там проигрывается один раз и затихает.
При этом при переходе между состояниями(из меню в игру и наоборот) музыка опять начинает играть.
Тоесть:
Сидим в меню. Играет мызыка.
Музыка кончилась. Тишина.
Переходим в игру. Вклчюается игровая музыка.
Играем. Музыка кончилась. Тиишина.
Переходим в меню. Менюшная музыка включается.
@!!ex_ (2007-06-23 17:49:00) [1]Такой подход не годится, поскольку музыку добавляет геймдиз без моего участия.... И я не знаю заранее че там играть будет.
Dib@zol (2007-06-23 16:27:00) [2]Добавь константы, пропиши в них время звучания каждой ХМ-ки в миллисекундах (время можно посмотреть в окне Винампа и умножить на 1000), заведи таймер, по событию таймера останавливаешь музыку и пускаешь снова.
ЗЫ: Как получать время в реалтайме не знаю, сам уже вторую неделю въехать не могу, так что для надёжности запихни ХМ-ки в ресурсы.