1

在 SDL Mix 中,有没有办法停止特定的 Mix_Music 曲目?例如。像这样的东西:

//music1 = the target music track to halt
if(condition)
{
    Mix_Halt(Music1);
}

谢谢。

4

2 回答 2

1

只有一Mix_Music首曲目。当您使用 开始播放音乐时Mix_PlayMusic,之前播放的音乐将自动停止(可能带有淡出)。如果要明确停止当前播放的Mix_Music曲目,可以使用Mix_HaltMusic.

如果你想同时控制声音,你应该使用Mix_Chunk对象来代替。这些是可以在多个通道上播放的样本,可以单独控制,例如:

Mix_Chunk* chunk1 = Mix_LoadWAV("chunk1.wav");
Mix_Chunk* chunk2 = Mix_LoadWAV("chunk2.wav");

Mix_PlayChannel(1, chunk1, -1); // Play chunk1 on channel 1
Mix_PlayChannel(2, chunk2, -1); // Play chunk2 on channel 2

if (condition)
    // Only halt channel 1, while channel 2 keeps playing
    Mix_HaltChannel(1);

您可以在文档中找到所有这些信息。

于 2016-12-24T10:19:18.543 回答
0

有一个Mix_PauseorMix_HaltChannel功能可以暂停特定频道,如果那是您所追求的。

于 2016-12-01T07:42:37.270 回答