我的Cocos2d-x学习笔记(二十)音乐与音效
游戏中的声音: 1、 音乐:通常长度长,适合做环境音乐,通常同一时刻只能播放一首音乐。 2、音效:长度短,可以同时播放多个音效。 Cocos2d-x提供了对音乐和音效的支持,实现播放、暂停和循环功能。一、包含所需的头文件与命名空间 音效引擎库CocosDenshion与游戏引擎捆绑发布,却不属于游戏引擎的一部分。 CocosDenshion位于Cocos2d-x目录下的” CocosDenshion”目录中,当使用音效引擎时候,把引擎头文件引进进来。 为了使用音效引擎,需要在程序中包含它的头文件与命名空间。 #include "SimpleAudioEngine.h" using namespace CocosDenshion;程序中包含如上头文件与命名空间后,就可以使用Cocos2d-x提供的音乐与音效功能。 二、支持的格式 CocosDenshion引擎库实际上对系统音频API的封装,支持的音频文件格式与平台有关。 Android音乐格式:mp3、mid、ogg、wav;可以播放android.media.MediaPlayer所支持的所有格式。 Android音效格式: ogg、wav;对wav支持并不完美。 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):卸载已经载入的音效文件,释放系统资源。 Float EffectVolume属性:获取或设置音效的音量大小,取值0.0到1.0之间。 Float BackgroundMusicVolume属性:获取或设置背景音乐的音量大小,取值0.0到1.0之间。 实例: 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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |