如何停止我的C游戏中播放音频?

时间:2019-01-26 14:29:03

标签: c audio

我正在用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,但如果这样做,声音将无法播放。

2 个答案:

答案 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();
}