Cocos Creator 打包vivo小游戏时,从后台切换回游戏,播放过的音效会重新播放的解决办法

使用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目录,重新构建即可解决问题。

给TA打赏
共{{data.count}}人
人已打赏
程序代码计算机基础

华为快游戏广告接入指南[小白快速上手]

2021-7-12 22:20:04

程序代码计算机基础

OPPO小游戏广告接入[小白上手]

2021-7-12 22:24:37

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索