cc.audioEngineBUG.资源工作流程-->延迟加载依赖的资源-->造成全局音频cc.audioEngine.stopMusic()不能正常使用

  • Creator 版本:2.1.2

  • 目标平台: Android

  • 详细报错信息,包含调用堆栈:

  • 重现方式:
    1.将要引用音频文件cc.AudioClip的节点所在Scene属性设置为延迟加载资源.
    资源通过这个引用(Ts脚本)
    @property({type:cc.AudioClip})//加载界面Bgm
    public audioClip1:{ type: cc.AudioClip, default: null } = null;

2.调用cc.audioEngine.playMusic(this.audioClip1, true);播放音频.
3.使用cc.audioEngine.stopMusic();关闭音频.
4.结果会出现关闭不了音频的情况.

  • 之前哪个版本是正常的 :目前只试过最新的Creator 2.1.2

  • 手机型号 :xiaomi 8

  • 手机浏览器 :

  • 编辑器操作系统 :

  • 编辑器之前是否有其它报错 :无

  • 出现概率:100%

  • 额外线索:
    1.我将Scene属性设置,<延迟加载资源>关闭后打包恢复正常,但我想使用这个资源优化选项,请帮帮我,谢谢!
    2.直接运行在预览器是正常的,打包成android就会出现上述问题.

如果有人看到不管知不知道请回复一下可以吗?
谢谢.
如果一直没人回复,感觉这个帖子沉啦一样.

2019.10.4:更新
问题已暂时解决,将音频文件的加载放到非延时加载的场景中,或新建一个小型的过度场景用来加载音频,然后使用持久化节点保存音频文件所在的节点,其他界面使用延时加载就没有问题啦!!!

2.0.10也有这个问题

参考这个PR,有临时修复方案了
https://github.com/cocos-creator-packages/jsb-adapter/pull/163/commits/cc0daeea77c517fc0aaaa35e4eba1a561f9926a4

1赞

我也遇到这个问题了,不晓得怎么解决 每次停止背景音乐都 不行

两个解决方案:
1.将场景的延时加载资源选项关掉(点击场景文件,在场景的信息中关闭延时加载资源).
2.用kenshin引擎开发团队提供的方案.(第二种我表示看不懂)

我看懂解决方案啦,就是找到这个 engine/jsb-audio.js文件,直接改源码…

我改了2.1.3的这个文件的源码,打包安卓后运行直接闪退
2.1.2修改这个文件打包之后还是不能停止音乐

2.2.0也有这个问题,延迟加载资源之后背景音乐就没法播放了。但是我建了一个新的项目,使用场景的延迟加载资源又可以播放

2.0.10版本,改完后,延迟延迟加载,调用 cc.audioEngine.playMusic 不能播放背景音乐,返回的-1

先cc.loader.loadRes做一次加载,完成后再调用 cc.audioEngine.playMusic。