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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • SSL协议简介

    SSL协议简介最近在看《密码学与网络安全》相关的书籍,这篇文章主要详细介绍一下著名的网络安全协议SSL。在开始SSl介绍之前,先给大家介绍几个密码学的概念和相关的知识。1、密码学的相关概念密码学(cryptography):目的是通过将信息编码使其不可读,从而达到安全性。明文(plaintext):发送人、接受人和任何访问消息的人都能理解的消息。密文(ciphertext):明…

  • 微信聊天代码轰炸_微信加好友验证轰炸

    微信聊天代码轰炸_微信加好友验证轰炸话不多说,直接上代码varappElement=document.querySelector('[ng-controller=chatSenderController]');

  • PathFileExists用法--使用#include

    PathFileExists用法--使用#includeBOOLPathFileExists(LPCTSTRpszPath);
            Determinesifafileexists.
    —经检测,该函数可以检测文件或目录是否存在!Remarks
    Thisfunctionteststhevalidityofthefileandpath.Itworksonlyonthelocalfilesystemoronaremotedrivethathasbeenmoun

  • Dubbo负载均衡策略之最小活跃策略

    Dubbo负载均衡策略之最小活跃策略今天我来学习一下Dubbo负载均衡之一的最小活跃策略-LeastActiveLoadBalance首先,让我们对负载均衡做一个简单的介绍。所谓集负载均衡,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行。负载均衡、集群容错、服务降级这三个概念在微服务中非常重要。从调用顺序来看,一次完整的RPC调用首先是负载均衡、其次是集群容错、最后是服务降级:负载均衡解决了选哪一个的问题、集群容错解决了换哪一个的问题、而服务降级则是解决了全错了怎么办的问题今天我们要学习的策略是最小活跃策略-Le

  • 如何恢复电脑共享文件(windows7错误恢复进不去)

    第一步:检查AutoShareServer和AutoShareWks注册表值,以确保未将它们设置为0。依次点击“开始→运行”,输入regedit,然后按回车键进入注册表编辑器。      第二步:找到并单击HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServerParameters。   第三步:如

  • 基数排序(LSD+MSD)详解

    基数排序(LSD+MSD)详解一.计数排序二.基数排序

发表回复

您的电子邮箱地址不会被公开。

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