SDL_mixer停止播放某些事件的音乐

SDL_mixer stop playing music on certain event

本文关键字:事件 音乐 播放 mixer SDL      更新时间:2023-10-16

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

void SoundCheck::run()
{
    Mix_PlayMusic(music, 1);
    while(1)
    {
        if(normalize(sound[0], range_->getPos()))
        {
            printf("stop soundn");
            Mix_HaltChannel(-1);
        }
        sleep(1);
    }
}

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

Mix_HaltChannel用于在使用

Mix_PlayChannel启动后停止Mix_Chunk

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