2

run()特定のポイントが範囲内にある場合、プログラムはサウンドの再生を停止する必要があります。そのために、別のスレッドで実行され、 and を使用してサウンドを再生する関数を持つクラスが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);

    }
}

しかし、if条件が true を返すと、「停止音」が出力されますが、音はまだ再生されます。何が問題のようですか?

4

1 に答える 1

4

Mix_HaltChannelMix_Chunkで開始した後にを停止するために使用されMix_PlayChannelます。

Mix_Musicで開始した後にを停止するにはMix_PlayMusic、 を使用する必要がありますMix_HaltMusic

于 2015-11-25T17:57:49.963 に答える