首页 > 代码库 > cocos2dx2.2添加音乐音效以及设置音量
cocos2dx2.2添加音乐音效以及设置音量
cocos2dx2.2添加音乐音效以及设置音量(非原创)
cocos2d-x使用SimpleAudioEngine类作为实现跨平台的音乐引擎,首先需要引入头文件。
对于声音文件,我们可以提前加载,这样会提高游戏的执行效率,但却会增加内存消耗,编码时,我们需要根据实际情况决定是否要进行预加载处理。
好了,我们写一个例子先,同样还是新建一个Music项目。
1、引入头文件以及相应的库
#include "cocos2d.h" #include "SimpleAudioEngine.h" 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. }
cocos2dx2.2添加音乐音效以及设置音量
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。