cocos2d 多个背景音乐播放

项目中,在播放背景音乐中,我遇到了,播放 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.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值