cocos2d-x 音乐以及音效

最近研究了下cocos2d-x声音

网上也翻了一些帖子

1.首先,格式的支持:可参照帖子http://article.ityran.com/archives/3627

不得不说的是格式是分平台的,有些平台不支持某种格式还是比较蛋疼的事,所以呢,还是选通用点的格式吧

mid在windows上可以,忘记有没有问题了,貌似中断什么的可能有问题~以后测试下吧

不过mid在android上是有问题的

所以背景音乐还是选mp3吧,mp3是压缩格式,表现力还是不错的~

 

2.其次,关于音乐的调用,网上有很多帖子都有说明,不多说,发个参考贴:http://blog.csdn.net/aa4790139/article/details/8140083

之所以发这个参考贴是觉得作者写的相对来说比较详细~

看完帖子,本人发现几个问题:

1)音效有释放的方法,但背景音乐没有~~为什么?如果有人知道要告诉我哈,THX~

2)背景音乐有判断是否在播放的方法,但是音效没有...不过这个有人写了帖子,自己加了方法,但是这个方法该了源码,有需要的可以参考下。帖子地址:http://blog.sina.com.cn/s/blog_61ece09901014ljt.html

3)发现网上大部分帖子最后都有会写释放声音:

SimpleAudioEngine::sharedEngine()->end();

这个可以写到AppDelegate的析构函数里

AppDelegate::~AppDelegate()
{

    SimpleAudioEngine::sharedEngine()->end();

}

 

3.最后关于声音的中断

在接电话,或者按home键切出去的时候,声音会中断,但是如果处理的不好会有一些bug

cocos2d-x在游戏中断时在AppDelegate对声音已经做了处理

// This function will be called when the app is inactive. When comes a phone call,it's be invoked too
void AppDelegate::applicationDidEnterBackground()
{
    CCDirector::sharedDirector()->pause();

    // if you use SimpleAudioEngine, it must be pause
    // SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
}

// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground()
{
    CCDirector::sharedDirector()->resume();
   
    // if you use SimpleAudioEngine, it must resume here
    // SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
}

不过其注释掉了~打开即开,不过如果你对声音有自己的处理话,这里可能会有一些bug哦~

比如说你暂停了背景音乐

这时候中断了,cocos2d-x暂停了背景音乐,回来时cocos2d-x又恢复了背景音乐~可不就bug了么

所以这里要加上自己的判断

if(isBackgroundMusicOpen)

{

           SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值