cocos2dx2.2添加音乐音效以及设置音量 (转)

原文:http://blog.csdn.net/u010229677/article/details/14452137


今天白白跟大家分享一下cocos2dx添加背景音乐音效的方法。

cocos2d-x使用SimpleAudioEngine类作为实现跨平台的音乐引擎,首先需要引入头文件。

对于声音文件,我们可以提前加载,这样会提高游戏的执行效率,但却会增加内存消耗,编码时,我们需要根据实际情况决定是否要进行预加载处理。

好了,我们写一个例子先,同样还是新建一个Music项目。

1、引入头文件以及相应的库

  1. #include "cocos2d.h"  
  2. #include "SimpleAudioEngine.h"  
  3. #include "CocosDenshionTest.h"  
  4. using namespace CocosDenshion;  

2、预加载音乐文件(可以不进行提前加载)
  1. #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)  
  2.     #define EFFECT_FILE        "effect2.ogg"  
  3. #elif( CC_TARGET_PLATFORM == CC_PLATFORM_MARMALADE)  
  4.     #define EFFECT_FILE        "effect1.raw"  
  5. #else  
  6.     #define EFFECT_FILE        "effect1.wav"  
  7. #endif   
  8.   
  9. #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)  
  10.     #define MUSIC_FILE        "music.mid"  
  11. #elif (CC_TARGET_PLATFORM == CC_PLATFORM_BLACKBERRY || CC_TARGET_PLATFORM == CC_PLATFORM_LINUX )  
  12.     #define MUSIC_FILE        "background.ogg"  
  13. #elif (CC_TARGET_PLATFORM == CC_PLATFORM_WP8)  
  14.     #define MUSIC_FILE        "background.wav"  
  15. #else  
  16.     #define MUSIC_FILE        "background.mp3"  
  17. #endif  
3、使用音乐以及音效,以及控制音量

我们更改了HelloWorld的退出按钮,可以根据flag的值来做相应的音乐处理。

  1. void HelloWorld::menuCloseCallback(CCObject * pSender)  
  2. {int flag = 0;    //我这里直接定义一个flag,大家可根据游戏项目的需要传入flag的值  
  3.     switch(flag)  
  4.     {  
  5.     // 背景音乐部分:  
  6.     case 0:  
  7.         SimpleAudioEngine::sharedEngine()->playBackgroundMusic(MUSIC_FILE, true);   //播放  
  8.         break;  
  9.     case 1:  
  10.         SimpleAudioEngine::sharedEngine()->stopBackgroundMusic();  // 停止播放  
  11.         break;  
  12.     case 2:  
  13.         SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();   //暂停播放  
  14.         break;  
  15.     case 3:  
  16.         SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();   // 恢复播放  
  17.         break;  
  18.     case 4:  
  19.         SimpleAudioEngine::sharedEngine()->rewindBackgroundMusic();   //从头重新播放  
  20.         break;  
  21.     case 5:  
  22.         if (SimpleAudioEngine::sharedEngine()->isBackgroundMusicPlaying())    //判断当前是否播放背景音乐  
  23.         {  
  24.             CCLOG("background music is playing");  
  25.         }  
  26.         else  
  27.         {  
  28.             CCLOG("background music is not playing");  
  29.         }  
  30.         break;  
  31.     // 音效部分  
  32.     case 6:  
  33.        unsigned int m_nSoundId = SimpleAudioEngine::sharedEngine()->playEffect(EFFECT_FILE);   //播放  
  34.         break;  
  35.     case 7:  
  36.         unsigned int m_nSoundId = SimpleAudioEngine::sharedEngine()->playEffect(EFFECT_FILE, true);  
  37.         break;  
  38.     case 8:  
  39.         SimpleAudioEngine::sharedEngine()->stopEffect(m_nSoundId);   //停止播放  
  40.         break;  
  41.     case 9:  
  42.         SimpleAudioEngine::sharedEngine()->unloadEffect(EFFECT_FILE);  //去除音效  
  43.         break;  
  44.         // add bakcground music volume  
  45.     case 10:  
  46.         SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(SimpleAudioEngine::sharedEngine()->getBackgroundMusicVolume() + 0.1f);//增加音量  
  47.         break;  
  48.     case 11:  
  49.         SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(SimpleAudioEngine::sharedEngine()->getBackgroundMusicVolume() - 0.1f);//降低音量  
  50.         break;  
  51.     case 12:  
  52.         SimpleAudioEngine::sharedEngine()->setEffectsVolume(SimpleAudioEngine::sharedEngine()->getEffectsVolume() + 0.1f);//增加音量  
  53.         break;  
  54.     case 13:  
  55.         SimpleAudioEngine::sharedEngine()->setEffectsVolume(SimpleAudioEngine::sharedEngine()->getEffectsVolume() - 0.1f);//降低音量  
  56.         break;  
  57.     case 14:  
  58.         SimpleAudioEngine::sharedEngine()->pauseEffect(m_nSoundId);//暂停音效  
  59.         break;  
  60.     case 15:  
  61.         SimpleAudioEngine::sharedEngine()->resumeEffect(m_nSoundId);//恢复音效  
  62.         break;  
  63.     case 16:  
  64.         SimpleAudioEngine::sharedEngine()->pauseAllEffects();//暂停所有音效  
  65.         break;  
  66.     case 17:  
  67.         SimpleAudioEngine::sharedEngine()->resumeAllEffects();//恢复所有音效  
  68.         break;  
  69.     case 18:  
  70.         SimpleAudioEngine::sharedEngine()->stopAllEffects();//停止所有音效  
  71.         break;  
  72.     }  
  73.       
  74. }  

ok,关于音乐的所有函数都在上面了,大家可以根据自己的需要去使用啦。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值