考虑以下情况。
我有两个用Mix_LoadMUS
加载的mp3文件,因此获得了Mix_Music *
的两个实例。我们称他们为m1
和m2
我使用Mix_PlayMusic
播放了第一首曲目:
Mix_PlayMusic(m1, -1);
然后我(让我说)使用第二个命令将第一个轨道替换为第二个轨道:
Mix_PlayMusic(m2, -1);
注意:我不会免费m1
,因为我希望将来再次使用它。
过了一会儿,我决定再次使用上面显示的相同命令再次播放m1
。
这是问题所在。
当我第二次玩m1
时,我希望它从文档中的0开始:
从开始到结束播放加载的音乐循环时间。
嗯,它做到了。几乎。问题是,在我停止它之后的几个毫秒的轨道被播放的原因不明。然后它开始从一开始就重现音乐。
我做错了吗?看起来重复使用已经存在的Mix_Music
无法正常工作。
我的意思是,当音乐停止时缓冲区中的内容仍然存在,因此当我第二次运行Mix_PlayMusic
时播放。这是预期的行为,错误还是我错过的东西?
作为旁注,如果我在播放m1
时免费m2
,那么它会按预期工作,然后我会在以后重新加载。