使用cc.AudioSource.play();
方式进行音效的播放时,构建VIVORPK发现了一个奇怪的问题
当最小化游戏再显示,也就是执行onShow时,已经播放过的音效会全都重新播放一遍
1、找到 “安装目录resourcesbuiltinvivo-runtimeresjsb-adapterenginejsb-audio.js” 这个文件
2、找到 proto.resume 方法
3、修改为
proto.resume = function () {
if (this.id != -1) {
if (this.id.state == 1) {
this.id.state = cc.AudioEngine.AudioState.PLAYING;
this.id.play();
}
}
};
或
1、找到 “安装目录resourcesbuiltinvivo-runtimeresjsb-adapterenginejsb-audio.js” 这个文件
2、找到 cc.audioEngine.resumeAll 方法,可以发现方法体里对所有的innerAudio进行里播放(造成了所谓的声音闪现)
所以只需要修改一下这里就能解决声音闪现问题。
3、观察发现所有播放完的音效(innerAudio)的_audioId属性的值都为-1。所以进行修改如下:
cc.audioEngine.resumeAll = function () {
cc.audioEngine.audios.forEach(element => {
element._audioId >-1 && cc.audioEngine.resume(element);
});
}
4、删掉qgame目录,重新构建即可解决问题。