在游戏过程中,音乐是一个绝不能少的一个环节,优美适合情景的音乐更能把玩家带进游戏的世界。
在Cocos2dx引擎里,游戏中的声音主要分为背景音乐和效果音。
背景音乐:BackGroundMusic就是我们熟耳的BGM,在游戏过程中不断的循环播放,达到营造出游戏的气氛。
效果音:玩家跟游戏里互动时播放的短时间声音,通常不循环播放。
在Cocos2dx引擎里,通过SimpleAudioEngine类来实现播放声音,使用时必须引入头文件SimpleAudioEngine.h,并使用命名空间CocosDension。
音频的预处理:在播放音效前,进行音频文件预处理是最好的,如果在需要播放的时候再对音频文件进行分析处理就可能出现卡顿了。
SimpleAudioEngine的基本方法:
static SimpleAudioEngine* getInstance() //获取对象并返回指针。
static void end() //关闭对象实例,以便可以重新初始化。
1,背景音乐
Cocos2dx对背景音乐支持的格式如下
Android:与android.media.MediaPlayer所支持的格式相同
IOS:支持MP3,CAFF
Win32:MIDI,WAV,MP3
WinPhone8:MIDI,WAV
基本方法:
virtual void preloadBackgroundMusic(const char* pszFilePath) //预加载背景音乐,参数是音乐文件路径。
virtual void playBackgroundMusic(const char* pszFilePath,bool bLoop = false) //播放背景音乐,参数一是文件路径,参数二表示是否循环。
virtual void stopBackgroundMusic(bool bReleaseData = false) //停止播放背景音乐,参数表示是否释放音乐数据,true时释放。
virtual void pauseBackgroundMusic() //暂停播放背景音乐。
virtual void resumeBackgroundMusic() //继续播放背景音乐。
virtual void rewindBackgroundMusic() //重新播放背景音乐。
virtual bool willPlayBackgroundMusic() //判断背景音乐是否可以播放。
virtual bool isBackgroundMusicPlaying() //判断背景音乐是否在播放。
virtual float getBackgroundMusicVolume() //获取背景音乐音量。
virtual void setBackgroundMusicVolume(float volume) //设置背景音乐音量,值域[0.0f,1.0f]。
效果音
Cocos2dx对效果音支持的格式如下
Android:Ogg,WAV
IOS:CAFF
Win32:MIDI,WAV
WinPhone8:MIDI,WAV
基本方法:
virtual float getEffectsVolume() //获取即时音效的音量。
virtual void setEffectsVolume(float volume) //设置即时音效的音量,值域[0.0f,1.0f]。
virtual void preloadEffect(const char* pszFilePath) //预加载音效,参数是文件路径。
virtual void unloadEffect(const char* pszFilePath) //卸载音效。
virtual unsigned int playEffect(const char* pszFilePath,bool bLoop=false,float pitch=1.0f,float pan=0.0f,float gain=1.0f) //播放即时音效,参数一是文件路径,参数二表示是否循环,参数三表示基因频率,参数四表示左右声道是否均衡,值域[-1,1],参数五表示音量衰减系数,值域[0.1]。
virtual void pauseEffect(unsigned int nSoundid) //暂停播放即时音效,参数为编号。
virtual void resumeEffect(unsigned int nSoundid) //继续播放即时音效,参数为编号。
virtual void stopEffect(unsigned int nSoundid) //停止播放即时音效,参数为编号。
virtual void pauseAllEffect() //暂停播放所有音效。
virtual void resumeAllEffect() //继续播放所有音效。
virtual void stopAllEffect() //停止播放所有音效。