我在使用 SDL_Mixer 时遇到问题(我缺乏经验)。块和音乐播放得很好(使用 Mix_PlayChannel 和 Mix_PlayMusic),同时播放两个不同的块不是问题。
我的问题是我想播放一些块 1,然后播放块 1 的第二次迭代与第一次重叠。我正在尝试快速连续播放一个块,但它会以更长的间隔重复播放声音(没有我想要的那么快)。我已经测试了控制台输出并且我的播放/循环方法没有错误,因为我可以看到控制台消息打印,以正确的速度循环。
我有一个块数组,我在初始化期间定期加载,使用 Mix_LoadWAV();
Mix_Chunk *sounds[32];
我还有一个保留用于播放这些块的功能:
void PlaySound(int snd_id)
{
if(snd_id >= 0 && snd_id < 32)
{
if(Mix_PlayChannel(-1, sounds[snd_id], 0) == -1)
{
printf("Mix_PlayChannel: %s\n",Mix_GetError());
}
}
}
尝试快速连续多次播放单个声音(例如,延迟 100 毫秒/10 bps),尽管以 10 bps 调用函数,但我仍以设定的较慢间隔(大约 500 毫秒左右/2 bps)播放声音。
我已经使用了“Mix_AllocateChannels(16);” 以确保我已经分配了频道(如果我使用不正确,请告诉我)并且仍然,阵列中的单个块拒绝以特定速率播放。
感谢任何想法/帮助,以及对我如何发布这个问题的批评。