Cocos2d-x提供了对声音和音效的支持,能够十分方便地实现音乐与音效的播放、暂停和循环功能。
使用音效引擎
我们可以使用Cocos2d-x自带的CocosDension库来使用声音引擎。CocosDesion实现了简单易用的SimpleAudioEngine类,为了使用它,我们只需引入他的头文件即可:
1
|
#include "SimpleAudioEngine.h"
|
支持平台与格式
CocosDesion支持的音乐格式如下:
平台 |
支持的常见文件格式 |
备注 |
Android |
mp3,mid,oggg,wav |
可以播放android.media.MediaPlayer所支持的所有格式 |
iOS |
aac,caf,mp3,m4a,221)">可以播放AVAudioPlayer所支持的所有格式 |
Windows
mid,221)">无 |
CocosDesion支持的音效格式如下:
oggg,221)">对wav的支持不完美
caf,m4a
可以播放Cocos2d-iPhone CocosDesion所支持的所有格式 |
无
预加载
加载音乐和音效通常是个耗时间的过程,因此为了防止由加载产生的延时导致实际播放与游戏播放不协调的现象。在播放音效和音乐前,需要预加载音乐文件。
通常我们会在进入场景前调用以下两个方法来预加载文件:
1
2
3
void
SimpleAudioEngine::preloadBackgroundMusic(
const
char
* pszFilePath);
SimpleAudioEngine::preloadEffect(
* pszFilePath);
|
因为SimpleAudioEngine与许多Cocos2d-x的部件一样,是一个单例类。所以当我们使用以上两个接口时,可以使用以下代码访问其实例:
SimpleAudioEngine::getInstance()->preloadBackgroundMusic( MUSIC_FILE );
SimpleAudioEngine::getInstance()->preloadEffect( EFFECT_FILE );
播放与停止
音频引擎提供了播放与停止的接口,以下介绍相应接口和使用方法:
3
4
5
6
virtual
playBackgroundMusic(
* pszFilePath,
bool
bLoop =
false
);
virtual
unsigned
int
playEffect(
,
float
pitch = 1.0f,monospace!important; font-size:1em!important; min-height:inherit!important">pan = 0.0f,monospace!important; font-size:1em!important; min-height:inherit!important">gain = 1.0f);
stopBackgroundMusic(
bReleaseData =
//停止背景音乐
stopEffect(unsigned
nSoundId);
stopAllEffects();
|
使用方法:
SimpleAudioEngine::getInstance()->playBackgroundMusic(MUSIC_FILE,
true
//播放背景音乐
SimpleAudioEngine::getInstance()->stopBackgroundMusic();
SimpleAudioEngine::getInstance()->stopEffect(_soundId);
暂停和恢复
当游戏进入后台时,通常需要暂停播放音乐,当游戏恢复前台运行时,再继续播放音乐。以下介绍几个相关接口以及用法:
pauseBackgroundMusic();
pauseEffect(unsigned
//暂停指定音效,nSoundId为音效编号
pauseAllEffects();
resumeBackgroundMusic();
resumeEffect(unsigned
//恢复指定音效,nSoundId为音效编号
resumeAllEffects();
4
SimpleAudioEngine::getInstance()->pauseEffect(_soundId);
SimpleAudioEngine::getInstance()->resumeEffect(_soundId);
SimpleAudioEngine::getInstance()->pauseAllEffects();
SimpleAudioEngine::getInstance()->resumeAllEffects();
|
其他成员
除了以上介绍的方法外,Cocos2d-x还提供了便捷的控制方法与属性:
setBackgroundMusicVolume(
volume);
setEffectsVolume(
//设置音效音量
rewindBackgroundMusic();
virtual
isBackgroundMusicPlaying();
// 设置背景音乐音量
CocosDenshion::SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(BGMOn ? 1.f : 0.f);
// 设置背景音效音量
CocosDenshion::SimpleAudioEngine::sharedEngine()->setEffectsVolume(effectOn ? 1.f : 0.f);
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|