关于cocos2dx的背景音乐和音效(1)

来源:互联网 发布:js代码整理工具 编辑:程序博客网 时间:2024/05/21 22:50

这次分享一下在cocos2dx中怎么使用背景音乐以及音效。背景音乐一般只有一个,而音效则可以有很多,当然不同的场景你也可以使用不同的背景音乐。今天先简单介绍一下如何播放、暂停、恢复背景音乐以及音效。

首先我们需要用到Cocos2d-x自带的CocosDension库来使用声音引擎,我们需要引入头文件:

#include"SimpleAudioEngine.h"

加载音乐和音效通常是个耗时间的过程,因此为了防止由加载产生的延时导致实际播放与游戏播放不协调的现象。通常我们会在进入场景前调用以下两个方法来预加载文件:

SimpleAudioEngine::getInstance()->preloadBackgroundMusic(MUSIC_FILE );                    // MUSIC_FILE是宏定义的文件名

 

SimpleAudioEngine::getInstance()->preloadEffect(EFFECT_FILE );     // EFFECT_FILE是宏定义的文件名

不过对于一般的小游戏,或者自己对效率要求不是很高的时候,也可以选择不使用。

音频引擎提供了播放与停止的接口,以下介绍相应接口和使用方法:

virtual voidplayBackgroundMusic(const char* pszFilePath, bool bLoop = false); //播放背景音乐,bLoop表示是否要循环播放

virtualunsigned int playEffect(const char* pszFilePath, bool bLoop = false, floatpitch = 1.0f, float pan = 0.0f, float gain = 1.0f);        //播放音效,bLoop表示是否要循环播放

virtualvoid stopBackgroundMusic(bool bReleaseData = false);               //停止背景音乐

virtualvoid stopEffect(unsigned int nSoundId);                     //停止指定音效,nSoundId为音效编号

virtualvoid stopAllEffects(); //停止所有音效

使用方法:

SimpleAudioEngine::getInstance()->playBackgroundMusic(MUSIC_FILE,true);   //播放背景音乐

SimpleAudioEngine::getInstance()->stopBackgroundMusic();//停止背景音乐

SimpleAudioEngine::getInstance()->stopEffect(_soundId);//停止音效

当游戏进入后台时,或者需要暂停游戏时,通常需要暂停播放音乐,当游戏恢复前台运行时,再继续播放音乐。以下介绍相关用法:

SimpleAudioEngine::getInstance()->pauseBackgroundMusic();          //暂停背景音乐

SimpleAudioEngine::getInstance()->resumeBackgroundMusic();         //恢复背景音乐

SimpleAudioEngine::getInstance()->pauseEffect(_soundId);           //暂停编号为_soundId的音效

SimpleAudioEngine::getInstance()->resumeEffect(_soundId);          //恢复编号为_soundId的音效

SimpleAudioEngine::getInstance()->pauseAllEffects();//暂停所有音效

SimpleAudioEngine::getInstance()->resumeAllEffects();//恢复所有音效

       有了这些方法以后,你就可以在你需要的地方添加音乐或者音效,是的正庚项目更加生动有趣味了。

 

除了以上介绍的方法外,Cocos2d-x还提供了便捷的控制方法与属性:

(PS:貌似在cocos2dx 3.6中,这几个方法是空的,下次也分享一下怎么把代码补全。)

SimpleAudioEngine::getInstance()->setBackgroundMusicVolume(floatvolume); //设置背景音乐音量

SimpleAudioEngine::getInstance()->setEffectsVolume(floatvolume); //设置音效音量

SimpleAudioEngine::getInstance()->rewindBackgroundMusic();//重新播放背景音乐

SimpleAudioEngine::getInstance()->isBackgroundMusicPlaying();//返回一个值,表示是否在播放背景音乐

      

       打算下一节来讲述一下怎么新建一个控制音效和音乐声音大小的页面,进行对游戏整个音频进行控制。



0 0