这个问题在cocos论坛讨论的贴子是https://forum.cocos.org/t/2-4-2-oppo/97902/7
问题表现:是cocos开发的小游戏移植到oppo平台音效播放异常,比如按钮音效,战斗音效,在播放一定的次数以后,音效就消失了,play的时候没有声音了。
产生的原因:可以通过cc.audioEngine.getMaxAudioInstance()获取当前手机设置的允许初始化的音效数量,cocos的cc.audioEngine.play方法执行一次就会创建一个新的实例,当执行次数达到系统设定的最大值之后,声音就不能播放了。
解决办法:手动释放创建的音效。核心代码如下:
playmp3(name,loop){
if(bgmusic.audioplay==false){
//禁音了
return;
}
if(loop===undefined){
loop=false;
}else{
loop=true;
}
bgmusic.playcount=bgmusic.playcount+1;
if(bgmusic.playcount>=cc.audioEngine.getMaxAudioInstance()){
console.log('卸载所有音效');
cc.audioEngine.uncacheAll();
bgmusic.mp3arr=new Array();
bgmusic.playcount=0;
}
let audioUrl=config.url_assets+'/mp3/'+name+'.mp3';
if(bgmusic.mp3arr[name]==undefined){
cc.loader.load({url: audioUrl, type: 'mp3'}, function (err, clip) {
bgmusic.mp3arr[name]=clip;
cc.audioEngine.play(clip,false,1);
});
}else{
let clip=bgmusic.mp3arr[name];
cc.audioEngine.play(clip,false,1);
}
},