SimpleAudioEngine的windows循环bug

bug描述:在使用playEffect播放设置循环参数为true,之后调用stopeffect有一定可能性会无法停止声音的循环播放
原因:
simpleAudioEngine在windows上使用mci接口播放音频文件,mci接口本身无循环功能,simpleAudioEngine在mci上层通过内置计数器实现音频的循环播放。当每次播放完毕后,mci都会向指定的窗口函数发送消息通知播放完毕,simpleAudioEngine
会在此时将内置计数器减一,并根据结果判断是否需要继续播放。
问题在于,stopEffect函数仅仅是通过mci接口函数停止了声音的播放,而没有将内置计数器归0,如果此时正好播放完毕,那么对应的窗口函数就会在stopeffect后收到消息,并根据计数器(依然是一个非常大的值)判断是否需要播放。因此会造成无法停止的现象。虽然结束的时间需要正好在播放结束,一般不会出现这种情况,但是当声音文件特别短时(LZ使用的点击音效只有0.065ms),这一概率就会大大增加,因此频繁发生无法停止声音的现象。

修改:
在stopEffect函数中将内置计数器归0

您好,我也遇到了上边你说的问题,楼主能说的详细一点吗,stopEffect函数中将内置计数器是什么啊

MciPlayer的内置计数器是m_uTimes,置0就可以了。
现在刚开始接触FMOD,发现FMOD在播放我之前提到的这个时间特别短的声音文件时也会有同样的现象,可能会无法终止循环播放。
FMOD的功能比较强大,播放分异步和同步。我刚刚接触,还不清楚是不是我设置的问题。研究中。
如果这是普遍现象,那么能够查询播放状态就是必须的了,FMOD或许能行。