Cocos2d-x游戏开发之SimpleAudioEngine 音乐音效

时间:2023-02-08 10:31:33

本站文章转载务必在明显处注明:原文链接:http://blog.csdn.net/cjsen/article/details/9405879

前言

Cocos2d-x支持多种音乐格式mp3wav等音乐格式。并使用SimpleAudioEngine单例类,进行管理。分为游戏中的长时间的背景音乐和短的音效两种,为我们的游戏增加效果。

1.背景音乐

源码常用方法

    void preloadBackgroundMusic(const char* pszFilePath);//预加载这个音乐(pszFilePath 为文件名如 soundtrack.mp3)

void playBackgroundMusic(const char* pszFilePath, bool bLoop);//播放背景音乐,bLoop是否循环播放
void playBackgroundMusic(const char* pszFilePath) {//同上,默认不循环播放
this->playBackgroundMusic(pszFilePath, false);
}

void stopBackgroundMusic(bool bReleaseData);//停止背影音乐,bReleaseData是否释放音乐文件
void stopBackgroundMusic() {//同上,默认不释放
this->stopBackgroundMusic(false);
}

void pauseBackgroundMusic();//暂停背影音乐

void resumeBackgroundMusic();//暂停开始播放音乐

void rewindBackgroundMusic();//从头调用播放背影音乐

bool willPlayBackgroundMusic();//返回布尔值 是否将要播放音乐

bool isBackgroundMusicPlaying();//返回布尔值 背影音乐是否在播放中

float getBackgroundMusicVolume();//返回背影音乐的音量

void setBackgroundMusicVolume(float volume);//设置背影音乐的音量

使用示例 :选预加载,再播放

    SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic("soundtrack.mp3");//先预加载
SimpleAudioEngine::sharedEngine()->playBackgroundMusic("soundtrack.mp3", true);//播放

2.音效

源码常用方法

    float getEffectsVolume();//获取音效音量
void setEffectsVolume(float volume);//设置音效音量
unsigned int playEffect(const char* pszFilePath, bool bLoop);//播放音效,bLoop是否循环播放
unsigned int playEffect(const char* pszFilePath) {//同上
return this->playEffect(pszFilePath, false);
}
void pauseEffect(unsigned int nSoundId);//暂停某个音效(nSoundId 由playEffect方法返回获得)
void pauseAllEffects();//暂停所有音效
void resumeEffect(unsigned int nSoundId);//重新开始某个音效
void resumeAllEffects();//重新开始所有音效
void stopEffect(unsigned int nSoundId);//停止某个音效
void stopAllEffects();//停止所在音效
void preloadEffect(const char* pszFilePath);//预加载某个音效文件
void unloadEffect(const char* pszFilePath);//释放某个音效文件

使用示例,与播放背影类似

    SimpleAudioEngine::sharedEngine()->preloadEffect("click.wav");//可以先提前预加载
soundId = SimpleAudioEngine::sharedEngine()->playEffect("click.wav", false);//在需要的地方播放

最后要记住,在程序不需要音乐时,要SimpleAudioEngine::sharedEngine()->end();释放sharedEngine()

简单的实例Demo下载