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

如何在我的C游戏中停止播放音频?,c,audio,C,Audio,我正在用C制作一个游戏,我想从一个音频文件切换到另一个,但我必须等待第一个文件完成播放。有没有办法让第一个马上停止播放 这是我的代码: void MusicPlayer (){ while (music == true) PlaySound("elevat_loop1.wav" , NULL, SND_FILENAME); while (music == false) PlaySound("silence.wav", NULL, SND_FILEN

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

可能是在其他线程中执行播放声音,需要时杀死该线程


除此之外

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==true)
很有可能成为真的,真的需要测试它吗?

我解决了它。代码是

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

C、 但是你有东西吗?什么是
Playsound
?我想他指的是mmsystem Playsound。Playsound函数播放给定文件名指定的声音。检查此项:此
线程t(MusicLayer)看起来不像C。我使用上一个测试,因为我想返回循环“elevat_loop1.wav”。我尝试使用SND_ASYNC,它应该立即返回,而不是在播放声音时阻塞,但是如果我使用SND_ASYNC,声音将不会播放。