我正在用C进行游戏,我想从一个音频文件更改为另一个音频文件,但是我必须等待第一个文件播放完毕。有没有办法让第一个立即停止播放?
这是我的代码:
void MusicPlayer (){
while (music == true)
PlaySound("elevat_loop1.wav" , NULL, SND_FILENAME);
while (music == false)
PlaySound("silence.wav", NULL, SND_FILENAME);
if (music == true)
MusicPlayer();
}
thread t(MusicPlayer);//I used thread because I want music to play independently
我希望第一个文件停止播放而不必等待。 我尝试使用SND_ASYNC,但如果这样做,声音将无法播放。
答案 0 :(得分:1)
可能在另一个线程中执行 PlaySound ,并在需要时杀死该线程?
之外
void MusicPlayer (){
while (music == true)
PlaySound("elevat_loop1.wav" , NULL, SND_FILENAME);
while (music == false)
PlaySound("silence.wav", NULL, SND_FILENAME);
if (music == true)
MusicPlayer();
}
不做任何递归,甚至编译器可能会优化使用循环似乎更好
while (music == false) {...}
在 music 恢复为真时会伸出援手,因此if (music == true)
有很大的机会成为现实,真的需要测试吗?
答案 1 :(得分:0)
我解决了。代码是
void MusicPlayer (){
if (music == true)
PlaySound(TEXT("elevmus.wav"), NULL, SND_LOOP | SND_ASYNC);
while (music == true)
;
if (music == false)
PlaySound("silence.wav", NULL, SND_LOOP | SND_ASYNC);
while (music == false)
;
if (music == true)
MusicPlayer();
}