解决cocos2d-x 后台切换后没有音效的问题

转载:https://zhuanlan.zhihu.com/p/29203664

转载:https://zhuanlan.zhihu.com/p/28341863


只是,iOS的状态比较多,就算是进入后台,也有WillEnterBackground, DidEnterBackground的区别,激活时,也有WillEnterForeground和DidBecomeActive的区别。cocos2d-x监控的是WillEnterForeground,这种监控大多数情况下是没有问题的。

然而,在极少数极端情况下,某个app收到WillEnterForeground并不表示它下一个状态是DidBecomeActive。如果我们在收到WillEnterForeground时,resume各种声音,但下一状态不是DidBecomeActive,就相当于在后台时播放声音,openAL失效啦!


怎么解决?把AppController.mm的WillEnterForeground函数里回调cc的WillEnterForeground这句话挪到DidBecomeActive函数里就可以了,就是这么简单!


不过,在AppController.mm的DidBecomeActive里调用cc的WillEnterForeground,这个名字怎么这么奇怪?没关系,把cc里所有的WillEnterForeground改成DidEnterForeground吧,这样看起来就顺眼多了。



Phone 5C, iPhone 6 Plus上,后台切换,有时候跟以前一样,没有音效,有背景音乐;

然后,如果关闭背景音乐再进行后台切换,这时候音效又自动回来啦,怎么回事?

经过半天的折腾,终于又改了一次CDAudioManager,继上次使用notification进行前后台切换的通知后,再调用之前被乱调用的audioSessionInterrupt, audioSessionResume,如下:

- (void) applicationWillResignActive:(NSNotification *) notification
{
    [self applicationWillResignActive];
    [self audioSessionInterrupted];
}

- (void) applicationDidBecomeActive:(NSNotification *) notification
{
    [self audioSessionResumed];
    [self applicationDidBecomeActive];
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值