cocos2dx3.3 声音问题

第一个问题 SimpleAudioEngine::getInstance()->playEffect 会暂停前面的音效(不能同时播放多个音效,实际操作是 使用了同一个音效,音效长度3秒,连续播放10边,第二遍是在一个遍开始1秒后 开始,这样下去,只有最后一个能播放全,前边的音效 都只播放了1秒)

第二个问题 AudioEngine::play2d 可以修改声音的音调吗

第三个问题 SimpleAudioEngine::getInstance() 修改音调的参数 改成100和1没有任何差别

有什么好的 可以修改音调的 第三方库 可以适配android和ios的推荐一下。

AudioEngine::play2d

第一个问题:我使用过playeffect可以同时播放多个音效(音效太多会卡),不知道为什么你会出现这个情况,能否给个示例工程?
第二:我还不清楚,可以看看有没有相关函数。
第二:因为这音效引擎设置音量在pc上是没作用的,在手机上是可以的。

第一个问题,Cocos2dx的音频功能略简陋,于是也提供了让诸位造轮子的可能性:),撸主想避免同一个音频被覆盖播放的问题,我想可以做成:不允许播放一个正在播放的音频。
1.建立一个std::map<int,float>//音频ID,音频时长。每次播放音效时,先在该map中查找ID是否存在:如果已存在,表示已经播放,直接return掉;如果不存在,播放之,同时插入map。
2.在update(float fDelta)中遍历1里定义map,如果“音频时长”<=0.0f,将这个元素从map里删掉;如果>0.0f,将“音频时长”变量自减fDelta。

无聊再附上C++伪代码,若有误导还请撸主海涵:
1.void playAudio(int iID, float fDuration)
{
std::map<int,float>::iterator it = mMapAudioPlaying.find(iID);//std::map<int,float> mMapAudioPlaying;
if(it!=mMapAudioPlaying.end())
return;
mMapAudioPlaying.insert(std::make_pair(iID, fDuration));
//todo,调用cocos2dx的播放音频接口
}

2.void update(float fDelta)
{
std::map<int,float>::iterator it = mMapAudioPlaying.begin();
while(it!=mMapAudioPlaying.end())
{
if(it->second <= 0.0f)
{
mMapAudioPlaying.erase(it++);
continue;
}
it->second -= fDelta;
++it;
}
}

另外吐个槽,因为没发现cocos2dx有音频播放结束的回调,所以只能手动侦测每个音频的时长- -|||

谢谢 多个音效是可以是可以同时播放的,我想要同时有间隔的播放同一个音效,例如这个音效长3秒,每隔一秒播放下一个,要重叠的效果