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

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

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



很多其它内容请关注Cocos2d-x系列图书
《Cocos2d-x实战(卷Ⅰ):C++开发》
本书交流讨论站点:
http://www.cocoagame.net
欢迎添�cocos2d-x技术讨论群:257760386、
327403678

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118594.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea怎么远程debug_idea 多线程调试

    idea怎么远程debug_idea 多线程调试1,远程DEBUG的必要性由于部署环境的差异性,相信很多朋友都碰到过开发环境正常测试过的功能在测试环境甚至生产环境下出现bug的情况。一般情况下,生产环境可以采取的手段比较单一,即通过日志的方式获取运行中的环境上下文,分析日志文件并尝试重现bug。这会带来的问题还是不少的,首先,日志的分析是一项比较耗时的工作;其次,现有的日志记录不一定能反映出问题,你可能需要多次重复这个过程(分析日志->猜测问题->加日志->部署->获取日志)来慢慢逼近问题。倘若是测试环境,我们还多了一项可..

    2022年9月11日
  • jrtplib接收rtcp_印象笔记是哪国的

    jrtplib接收rtcp_印象笔记是哪国的原博主博客地址:https://blog.csdn.net/qq21497936本文章博客地址:https://blog.csdn.net/qq21497936/article/details/84785284目录前话2019年12月6日补充JRTPLIB介绍CMake介绍JThread编译步骤一:下载JThread1.3.1并解压,如下图:步骤二:新建jthre…

    2022年7月28日
  • eplan永久激活码[最新免费获取]

    (eplan永久激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月29日
  • 没有找到MFC80D.DLL,因此这个应用程序未能启动。重新安装应用程序可能会修复问题。…

    没有找到MFC80D.DLL,因此这个应用程序未能启动。重新安装应用程序可能会修复问题。…

    2022年3月8日
  • 中缀表达式转后缀表达式的方法,步骤和原理及后缀表达式运算方式

    中缀表达式转后缀表达式的方法,步骤和原理及后缀表达式运算方式中缀转后缀本文大部分资料参考慕课何钦铭老师的数据结构相关的慕课链接:表达式求值中缀表达式是最常用的算术表达式,运算符在运算数中间,运算需要考虑运算符优先级.后缀表达式是计算机容易运算的表达式,运算符在运算数后面,从左到右进行运算,无需考虑优先级,运算呈线性结构.先举个简单的转换例子2+9/3-5(前缀)->293/+5-(后缀)先进行乘除再进行加减运算规律,…

    2022年6月16日
  • gitlab 升级_gitlab回退到指定版本

    gitlab 升级_gitlab回退到指定版本GitLab跨版本升级

    2022年4月21日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号