Cocos2d-x中使用音频CocosDenshion引擎介绍与音频文件的预处理

Cocos2d-x提供了一个音频CocosDenshion引擎,CocosDenshion引擎能够独立于Cocos2d-x单独使用,CocosDenshion引擎本质上封装了OpenAL音频处理库。
具体使用的API是SimpleAudioEngine。SimpleAudioEngine有几个经常使用的函数:
void preloadBackgroundMusic (const char *pszFilePath) 预处理背景音乐文件,将压缩格式的文件进行解压处理,如MP3解压为WAV。
void playBackgroundMusic (const char *pszFilePath) 播放背景音乐。
void stopBackgroundMusic () 中止播放背景音乐。
void pauseBackgroundMusic () 暂停播放背景音乐。
void resumeBackgroundMusic () 继续播放背景音乐。
bool isBackgroundMusicPlaying () 判断背景音乐是否在播放。
unsigned int playEffect (const char *pszFilePath)  播放音效。
void pauseEffect (unsigned int nSoundId)  暂停播放音效,参数nSoundId 是playEffect函数返回ID。
void pauseAllEffects () 暂停全部播放音效。
void resumeEffect (unsigned int nSoundId)  继续播放音效,参数nSoundId 是playEffect函数返回ID。
void resumeAllEffects ()  继续播放全部音效。
void stopEffect (unsigned int nSoundId) 中止播放音效,参数nSoundId 是playEffect函数返回ID。
void stopAllEffects ()  中止全部播放音效。
void preloadEffect (const char *pszFilePath) 预处理音效音频文件,将压缩格式的文件进行解压处理,如MP3解压为WAV。


不管是播放背景音乐仍是音效在播放以前进行预处理是有必要的,这个过程是对于音频文件进行解压等处理,预处理只须要在整个游戏运行过程当中处理依次就能够了。若是不进预处理,则会发如今第一次播放这个音频文件时候感受很“卡”,用户体验很差。
预处理相关函数有两个:preloadBackgroundMusic和preloadEffect。下面代码是预处理背景音乐和音频:
//初始化 背景音乐
SimpleAudioEngine::getInstance()->preloadBackgroundMusic("sound/Jazz.mp3");
//初始化 音效
SimpleAudioEngine::getInstance()->preloadEffect("sound/Blip.wav");
这些预处理过程代码放置到什么地方比较适合呢?因为放置到任何一个场景层中,当进入到这个层时候都比较“卡”,因此最好不要放置到场景层中,最好放置到AppDelegate文件中applicationDidFinishLaunching()函数中,代码以下。
bool AppDelegate::applicationDidFinishLaunching() {
    … …
    // run
    director->runWithScene(scene);

//初始化 背景音乐
SimpleAudioEngine::getInstance()->preloadBackgroundMusic("sound/Jazz.mp3");
//初始化 音效
SimpleAudioEngine::getInstance()->preloadEffect("sound/Blip.wav");


    return true;
}
php

applicationDidFinishLaunching()函数是游戏启动时候回调。在游戏启动时候,通常会有一个启动界面,启动界面通常会有一个延迟展现,这是段时间是初始化最佳时机。app

 

 

 

更多内容请关注Cocos2d-x系列图书《Cocos2d-x实战(卷Ⅰ):C++开发》函数

本书交流讨论网站:http://www.cocoagame.net网站

欢迎加入cocos2d-x技术讨论群:25776038六、327403678spa

相关文章
相关标签/搜索