cocos2d 多个背景音乐播放

本文介绍了在Cocos2d-x项目中如何实现多个背景音乐循环播放,包括遇到的问题和解决方案。在SimpleAudioEngine不提供播放完成回调的情况下,通过在更新循环中检查音乐状态来实现音乐切换。同时,针对Android平台Home键切换后台导致的音乐播放异常,提出了通过标识变量来控制播放的策略。最后,列举了SimpleAudioEngine的相关API供开发者参考。
摘要由CSDN通过智能技术生成
项目中,在播放背景音乐中,我遇到了,播放 music1, music2,先播放music1,等播放完后循环播放music2 。

一开始看到需求的时候,我以为还是很简单的,当我看到 SimpleAudioEngine 并不支持 播放完成后并不没有回调 ,那意味着必须得自己写回调。我想到了二种方案。(大家有什么好办法欢迎留言指出)。
1。延迟播放 譬如 弄一个 delay 播放。
2。在update里面,每一秒 调用 isBackgroundMusicPlaying 判断第一收是否播放完成

然后我选择了 第二种,在每一秒我都会去判断 背景音乐是否还在播放,如果没有播放,则循环播放第二首背景音乐。

然而 却另外发现了个问题,(IOS没有问题,android有),当 如果在刚开始 播放第一首的时候,home键切换到后台,会出现播放第二首,因为 切换后台的某一瞬间,第一首播放暂停了,然后又播放了第二首,第二首却没有调用stop music。导致切换到后台也会继续播放第二首。

这种问题解决办法也是有的。 播放都是调用到了 android 代码。我们可以确定,按 home键的时候,肯定会先调用 pauseBackgroundMusic 在 调用 isBackgroundMusicPlaying 。所以在Cocos2dxMusic.java 中 home 键的调用 pauseBackgroundMusic 暂停 时,我们会标识一个 boolean 类型的变量,默认为 false ,进了 pauseBackgroundMusic 后 值为 true ,当我们在调用 isBackgroundMusicPlaying 时,如果 这个标识为 true 那么 我们完全可以不让它继续往下播放了。记得 从 后台切换到前台的时候 调用 resumeBackgroundMusic ,把标识设置为 false.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值