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)
上一篇 2021年12月4日 上午6:00
下一篇 2021年12月4日 上午7:00


相关推荐

  • BIOS存储显示新安装固态硬盘,但为何进入系统后恢复失败的概率更大?

    BIOS存储显示新安装固态硬盘,但为何进入系统后恢复失败的概率更大?

    2026年3月14日
    2
  • C程序设计的抽象思维-递归过程-砝码称重

    C程序设计的抽象思维-递归过程-砝码称重

    2022年2月6日
    53
  • ThinkPHP5旅游管理系统

    ThinkPHP5旅游管理系统Q1115487855ThinkPHP5旅游管理系统一系统介绍本旅游管理系统基于ThinkPHP5开发,系统角色分为用户和管理员两种,系统分为前后台,用户可在前台注册登录、发布行程单和游记等,管理员登录后台进行管理。技术栈ThinkPHP5+mysql+bootstrap+jquery+vscode+phpstudy二系统功能用户1注册/登录/注销2个人中心

    2022年4月30日
    59
  • 一起学JAVA 反射学习(超详细)

    一起学JAVA 反射学习(超详细)1什么是反射?Reflection(反射)是Java程序开发语言的特征之一,它允许运行中的Java程序对自身进行检查,或者说“自审”,也有称作“自省”。反射非常强大,它甚至能直接操作程序的私有属性。我们前面学习都有一个概念,被private封装的资源只能类内部访问,外部是不行的,但这个规定被反射赤裸裸的打破了。反射就像一面镜子,它可以在运行时获取一个类的所有信息,可以获取到任何定义的信息(包括成员变量,成员方法,构造器等),并且可以操纵类的字段、方法、构造器等部分。2为什么需要反射?

    2022年6月11日
    36
  • java数组排序的几种方法

    java数组排序的几种方法因为看书看到了 java 数组排序 所以将常用的几种排序方法写下来 仅供参考 1 用 sort 排序 从小到大 int arr 5 2 66 3 7 Arrays sort arr Arrays 是 util 包 for inti arr nbsp nbsp System out println i 2 冒泡排序从小到大 int arr 5 2 66 3 7 inttemp fo

    2026年3月17日
    1
  • Win8下用DOSBox编写汇编语言

    Win8下用DOSBox编写汇编语言      DOSBox 是一个 DOS模拟程序,可以很方便的移植到其他的平台,因此可以使用它在Win8系统中编写汇编语言。下面提供相关下载链接:     DOSBox下载: http://pan.baidu.com/s/1qWwkss0      汇编工具下载: http://pan.baidu.com/s/1i3taKmT  DOSB

    2022年4月7日
    47

发表回复

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

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