SDL_mixer 在某些事件中停止播放音乐

Cyn*_*izm 3 c++ sdl sdl-mixer

如果某个点在范围内,我的程序需要停止播放声音,因为我有一个类,run()其函数在单独的线程上运行,并使用SDL.h和播放声音SDL_mixer.h

void SoundCheck::run()
{
    Mix_PlayMusic(music, 1);
    while(1)
    {
        if(normalize(sound[0], range_->getPos()))
        {

            printf("stop sound\n");
            Mix_HaltChannel(-1);
        }
        sleep(1);

    }
}
Run Code Online (Sandbox Code Playgroud)

但是当if条件返回 true 时,它​​会打印“停止声音”,但声音仍然播放,似乎是什么问题?

小智 6

Mix_HaltChannel用于Mix_Chunk在开始后停止 a Mix_PlayChannel

Mix_Music要在开始后停止Mix_PlayMusic,您必须使用Mix_HaltMusic.