用cocos2d-x有一个很烦的问题,经常跳到微信登录界面,再返回时,就放不出音效了。背景音乐还有,就是一直哑声;有时候却又是正常的;多切换几次,说不定又好了,真他妈诡异!
我们用的是最新版cocos2d-x-3.15.1,在USB连线测试时,基本上不会出问题,切换了十几次,音效完全正常。尼玛!
不信邪,继续切换;切换几十次后,终于有一次出问题了,复现成功!控制台log里有
[aurioc] 1322: AUIOClient_StartIO failed (561015905)
这样的信息。有log就好办,开始面向Google编程。多看了几个不同项目的issue,似乎是这样的:
openal(cocos2d-x simpleAudioEngine用的是这货吧?) 使用时,必须在前端活跃状态才行,如果切换到后台,必须停止播放,要不然就失效,各种Undefined Behaviour。因此,cocos2d-x里也监控了这种变化,在AppController.mm这个系统的applicationDidEnterBackground里调用cc自己的applicationDidEnterBackground;在AppController.mm这个系统的applicationWillEnterForeground里调用cc自己的applicationWillEnterForeground,妄图达到app激活时恢复声音,app进入后台就暂停声音这种效果。
只是,iOS的状态比较多,就算是进入后台,也有WillEnterBac