谢谢回答,无法播放原因找到了,应该是引擎问题,setFinishCallback立马再调用自己去playMusic时会存在逻辑冲突,大概是js层调用play前会先调用stop导致的,在原生上不会出现这个问题,目前我只发现在web端会遇到这个问题,解决方法就是在回调前加上延迟。
let musicClip = this._audioMap.get(musicName);
if (musicClip) {
let id = cc.audioEngine.playMusic(musicClip, false);
cc.audioEngine.setFinishCallback(id, () => {
// 延时0.1s,防止callback调用不到
setTimeout(() => {
this.playMusicGroup(musicGroup, model, index);
}, 100);
});
} else {
cc.loader.loadRes(“audio/” + musicName, (err, clip) => {
if (err) {
console.error([AudioManager.playMusicGroup] audio/${musicName} 加载AudioClip失败);
} else {
this._audioMap.set(musicName, clip);
let id = cc.audioEngine.playMusic(clip, false);
cc.audioEngine.setFinishCallback(id, () => {
// 延时0.1s,防止callback调用不到
setTimeout(() => {
this.playMusicGroup(musicGroup, model, index);
}, 100);
});
}
});
}