我的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():停止播放所有音效。

Void stopBackgroundMusic():停止播放背景音乐。

实例:

	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之间。

Void end():当不再使用音频引擎,用此方法释放SimpleAudioEngine所占用的资源。

实例:

	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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值