首先,要想使用音效,需要启用音效引擎库CocosDenshion中的SimpleAudioEngine类,
#include "SimpleAudioEngine.h"
CocosDenshion引擎库实际上是对系统音频API的封装,因此它支持的音频文件格式与平台有关。具体不同平台的格式支持请查阅资料,通常我们就用各个平台都支持的格式,音乐:mp3;音效:wav。
具体的使用做一个简单的介绍,比较简单:
音乐:同一时间,只能有一个背景音乐在播放。
void preloadBackgroundMusic( 音乐文件); //加载音乐 void playBackgroundMusic( 音乐文件, bool); //播放音乐, true代表循环播放, false代表不循环 void pauseBackgroundMusic(); //暂停 void resumeBackgroundMusic(); //继续 void stopBackgroundMusic(); //停止 void rewindBackgroundMusic(); //从头播放 bool isBackgroundMusicPlaying(); //是否正在播放 void setBackgroundMusicVolume(); //设置音量 float getBackgroundMusicVolume(); //获取音量
声音:与音乐不同的是,同一时间可以有多个音效在播放,引擎在播放音效的时候会返回该次播放音效的ID,方便之后的控制。
void preloadEffect( 音效文件 ) void unloadEffect( 音效文件 ) int playEffect( 音效文件, 是否重复 ) //返回一个音效id作为标识 void stopEffect( 音效ID ) void stopAllEffects() void pauseEffect( 音效ID ) void pauseAllEffects() void resumeEffect( 音效ID ) void resumeAllEffects() float getEffectsVolume() void setEffectsVolume()
这里呢,在播放音效的时候需要指定是否循环播放,默认是不循环。音效还有一点,就是没有“是否正在播放”的判断,如果需要判断的话,需要该引擎底层,自己仿照音乐播放判断的方式写一个。
SimpleAudioEngine是个单例类,使用方式:SimpleAudioEngine::sharedEngine()->playEffect( 音效文件 );
注意:
播放背景音乐前,一定要提前加载背景音乐文件,音效不需要。
在退出后且不再需要音乐时,要调用end()方法来释放引擎占用的资源。