背景音乐切后台再回前台后不会继续播放

  • Creator 版本: 2.4.4

  • 目标平台:微信小游戏真机

  • 重现方式:真机上操作,将小游戏切到后台后再切回前台

试了好多次,发现在微信开发者工具模拟器上是可以的,到了真机上就不行了,在引擎那边加了log终于找到了原因。

游戏切到后台后,引擎会调用CCGame.js的pause函数,然后调用CCAudioEngine里的break来停止正在播放的音乐。
image

我在break函数里加了log后在真机中发现了,原来真机中切换到后台,会调用两次这个break函数,在游戏进入后台后还会再调用一次,而且第二次调用不是从CCGame来的。
image
image

第二次调用break函数会导致breakCache变成空的(因为state===Audio.State.PLAYING这个判断会是false),所以在restore时也就无法播放音乐了(restore中要判断breakCache的length是否大于0)。
image

不知道这个是引擎的BUG还是微信的?

修改break和restore函数后可以解决这个问题,但是还是找不出为何会break两次的原因。
image

官方的音频管理就是渣渣。最后还是要开发者自己管理。