C++ SDL_混音器在某些事件中停止播放音乐

C++ SDL_混音器在某些事件中停止播放音乐,c++,sdl,sdl-mixer,C++,Sdl,Sdl Mixer,如果某个点在范围内,我的程序需要停止播放声音,因为我有一个函数为run()的类,该函数在单独的线程上运行,并使用SDL.h和SDL\u mixer.h播放声音: void SoundCheck::run() { Mix_PlayMusic(music, 1); while(1) { if(normalize(sound[0], range_->getPos())) { printf("stop sound\n

如果某个点在范围内,我的程序需要停止播放声音,因为我有一个函数为
run()
的类,该函数在单独的线程上运行,并使用
SDL.h
SDL\u 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);

    }
}

但是当
如果
条件返回true,它会打印“停止声音”,但声音仍在播放,这似乎是什么问题呢?

混合播放频道
用于在使用
混合播放频道
启动后停止
混合块

要在使用
Mix\u PlayMusic
启动后停止
Mix\u音乐
,必须使用
Mix\u HaltMusic