游戏中的声音:
1、 音乐:通常长度长,适合做环境音乐,通常同一时刻只能播放一首音乐。
2、音效:长度短,可以同时播放多个音效。
Cocos2d-x提供了对音乐和音效的支持,实现播放、暂停和循环功能。一、包含所需的头文件与命名空间
音效引擎库CocosDenshion与游戏引擎捆绑发布,却不属于游戏引擎的一部分。
CocosDenshion位于Cocos2d-x目录下的” CocosDenshion”目录中,当使用音效引擎时候,把引擎头文件引进进来。
为了使用音效引擎,需要在程序中包含它的头文件与命名空间。
#include "SimpleAudioEngine.h" using namespace CocosDenshion;程序中包含如上头文件与命名空间后,就可以使用Cocos2d-x提供的音乐与音效功能。
二、支持的格式
CocosDenshion引擎库实际上对系统音频API的封装,支持的音频文件格式与平台有关。
IOS音乐格式:aac、caf、mp3、m4a和wav;可以播放AVAudioPlayer所支持的所有格式。
IOS音效格式:caf和wav;可以播放Cocos2d-iPhone CocosDenshion所支持的所有格式。
Windows音乐格式:mid、mp3、wav。
Windows音效格式:mid、wav。三、使用
(一)预加载:
void preloadEffect(const char* pszFilePath):用于预加载音效文件,其中pszFilePath为音效文件所在的目录位置。
Void preloadBackgroundMusic(const char * pszFilePath):用于预加载背景音乐,pszFilePath为音乐文件所在的目录位置。实例:
SimpleAudioEngine::sharedEngine()->preloadEffect(""); SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic("");(二)播放:
Unsigned int playEffect(const char* pszFilePath,bool bLoop = false):播放音效。
pszFilePath表示音效文件的存放位置,bLoop参数控制是否循环播放,默认为false,即只播放一次。
返回的一个无符号整形值,此次播放音效的唯一标识,用于暂停此音效。
VoidplayBackgroundMusic(const char* pszFilePath,bool bLoop= false);播放背景音乐。
pszFilePath表示音乐文件所在路径,bLoop表示是否循环播放。
SimpleAudioEngine::sharedEngine()->playEffect(""); SimpleAudioEngine::sharedEngine()->playBackgroundMusic("");(三)停止:
Void stopEffect(unsigned int nSoundId):停止播放指定的音效。
nSoundId参数是将要被停止播放的音效的唯一标识,该标识是playEffect方法的返回值。
Void stopAllEffects():停止播放所有音效。
实例:
SimpleAudioEngine::sharedEngine()->stopEffect("音效文件名"); SimpleAudioEngine::sharedEngine()->stopAllEffects(); SimpleAudioEngine::sharedEngine()->stopBackgroundMusic();
(四)暂停
Void pauseBackgroundMusic():暂停播放音乐。通常在AppDelegate类中调用此方法。
Void pauseEffect(unsigned int nSoundId):暂停播放指定音效。
实例:
SimpleAudioEngine::sharedEngine()->pauseEffect("音效文件名"); SimpleAudioEngine::sharedEngine()->pauseAllEffects(); SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();(五)恢复播放
Void resumeBackgroundMusic():恢复音乐播放。
Void resumeEffect(unsigned intnSoundId):恢复播放某一被暂停的音效。
Void resumeAllEffects():恢复所有被暂停的音效。
实例:
SimpleAudioEngine::sharedEngine()->resumeEffect("音效名"); SimpleAudioEngine::sharedEngine()->resumeAllEffects(); SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();(六)其他
Void rewindBackgroundMusic():重新播放背景音乐。
Bool isBackgroundMusicPlaying():返回一个布尔类型值,表示是否正在播放背景音乐。
Void unloadEffect(const char*pszFilePath):卸载已经载入的音效文件,释放系统资源。
实例:
SimpleAudioEngine::sharedEngine()->rewindBackgroundMusic(); SimpleAudioEngine::sharedEngine()->isBackgroundMusicPlaying(); SimpleAudioEngine::sharedEngine()->unloadEffect("音效文件名"); SimpleAudioEngine::sharedEngine()->end(); SimpleAudioEngine::sharedEngine()->getEffectsVolume(); SimpleAudioEngine::sharedEngine()->getBackgroundMusicVolume(); SimpleAudioEngine::sharedEngine()->setEffectsVolume(0.5); SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(0.5);