搜索
首页数据库mysql教程Cocos2d-x 3.0心得(04)

用cocos2dx播放音乐音效算是很简单的事了,没什么特殊需求的话,用SimpleAudioEngine就可以搞定。不过特殊需求总是会出现的。要是你经常听歌,应该会有印象,某些播放器在切换音乐的时候,正在播放的音乐会逐渐淡出直到消失,然后才会播放新的音乐。如果想在

用cocos2dx播放音乐音效算是很简单的事了,没什么特殊需求的话,用SimpleAudioEngine就可以搞定。不过特殊需求总是会出现的。要是你经常听歌,应该会有印象,某些播放器在切换音乐的时候,正在播放的音乐会逐渐淡出直到消失,然后才会播放新的音乐。如果想在游戏里也实现类似的效果,光靠SimpleAudioEngine是不够的。

cocos2dx里面的音频管理分3个层次,从高到低是SimpleAudioEngine、CDAudioManager、CDSoundEngine。当然这是官方的说法。通常一旦你用到了CDAudioManager,那么你基本上也得使用CDSoundEngine,因为CDAudioManager主管BGM,CDSoundEngine主管音效。另外比较遗憾的是,CDAudioManager和CDSoundEngine只能在iOS上使用。当然你可以写两套代码,在iOS上实现炫酷的音频效果,其他平台就只能soso了。


CDAudioManager是用来管理BGM的,这从它所包装的音频对象类名CDLongAudioSource就可以看出来,“长音频源”,没什么比BGM更合适了。而CDLongAudioSource实际是对AVAudioPlayer的包装,AVAudioPlayer是一个不折不扣的iOS原生类,所以你明白为什么CDAudioManager只能在iOS上用了。

CDLongAudioSource本身还算通俗易懂,加载、播放、暂停、循环、控制音量,该有的接口一应俱全。

CDAudioManager包含了一个CDLongAudioSource数组,这个数组在内部设定了固定长度为2。这意味着如果使用CDAudioManager,我们可以同时播放两首BGM。。。嗯,这不是说我们真的要同时放两首音乐,这是用来做其他效果的。比如说,当你准备换音乐的时候,让第一首淡出,同时第二首淡入,这一小段时间里,两首音乐是同时存在的,听起来的效果就是从第一首无缝切换到第二首。这不是很cool么Cocos2d-x 3.0心得(04)

CDAudioManager在内部把CDLongAudioSource数组里的第一个称为“左声道(kASC_Left)”,第二个称为“右声道(kASC_Right)”。但它其实跟你耳机那两根线没什么关系,都能出声。当然也可能是我没找到在什么地方设置,不过对于一个手机游戏我们还是不要太苛刻了。

你可以通过下面两个方法来加载和获取音乐对象:

/** Loads the data from the specified file path to the channel's audio source */
-(CDLongAudioSource*) audioSourceLoad:(NSString*) filePath channel:(tAudioSourceChannel) channel;
/** Retrieves the audio source for the specified channel */
-(CDLongAudioSource*) audioSourceForChannel:(tAudioSourceChannel) channel;
至于播放控制,那就是CDLongAudioSource自己的事了。

CDAudioManager里有一些被声明废弃的接口,看得出来,早期版本的CDAudioManager只能播放一首BGM。。。嘛,时代总是会进步的。

CDAudioManager除了控制BGM,还能用来做一些跟BGM相关的跨App的事。你可以给CDAudioManager设置一个模式

-(void) setMode:(tAudioManagerMode) mode;

它能做的事情包括:

只让你的App能放BGM(kAMM_FxPlusMusic);

让你的App到后台还能放BGM(kAMM_MediaPlayback);

当别的播放器在放BGM时让你的App静音(kAMM_FxPlusMusicIfNoOtherAudio),等等。

你还可以通过

-(void) setResignBehavior:(tAudioManagerResignBehavior) resignBehavior autoHandle:(BOOL) autoHandle;
来设置当App被中断的时候(比如说,来电话了),怎么处理BGM:

先停止,回游戏后继续放(kAMRBStopPlay);
先停止,回游戏后不放了(kAMRBStop),等等。


说了这么多,似乎还没讲到怎么做BGM的混合、淡入淡出。这其实没什么奥秘,你要做的只是控制CDLongAudioSource的音量。从1逐渐减至0,就是淡出;从0逐渐增至1,就是淡入。cocos2dx提供了一个CDLongAudioSourceFader,可以帮助你比较规范的控制这些音量。它继承自CDPropertyModifier,看名字就知道这是用来动态控制音频属性的。它的作用原理跟cocos2dx的Action系列很类似,所以你应该很快就能熟悉它。只不过,这里没有ActionManager一类的管理器Cocos2d-x 3.0心得(04)所以你得自己弄一个了。

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
如何使用“隔空播放”流式传输视频或镜像 iPhone 或 iPad 屏幕如何使用“隔空播放”流式传输视频或镜像 iPhone 或 iPad 屏幕Jul 14, 2023 pm 07:53 PM

本快速指南将向您展示如何使用AirPlay,这是Apple的创新无线流媒体功能,可以轻松共享和显示内容。允许您使用Wi-Fi将iPhone或iPad连接到与AirPlay兼容的AppleTV、智能电视、扬声器和Mac以及某些第三方扬声器和智能电视,以实现无缝数据传输。“隔空播放”以点对点为基础运行,通过本地网络连接您的Apple设备。它使用多种技术的组合,包括用于流式传输音频和视频的实时传输协议(RTP)和用于设备发现的Bonjour。简而言之,当您使用“隔空播放”时,您的设备会发送数据流,然后

如何使用Layui开发一个支持音频和视频播放的多媒体页面如何使用Layui开发一个支持音频和视频播放的多媒体页面Oct 27, 2023 pm 01:58 PM

如何使用Layui开发一个支持音频和视频播放的多媒体页面在现代互联网的发展中,媒体内容已经成为人们日常生活中不可或缺的一部分。为了提供更好的用户体验,我们经常需要在网页上嵌入音频和视频播放器。本文将介绍如何使用Layui开发一个支持音频和视频播放的多媒体页面,并提供详细的代码示例。第一步:引入Layui和必要的CSS和JavaScript文件要开始使用Lay

爱奇艺怎么播放本地视频 爱奇艺播放本地视频方法爱奇艺怎么播放本地视频 爱奇艺播放本地视频方法Mar 13, 2024 pm 04:00 PM

  爱奇艺怎么播放本地视频?在爱奇艺这款手机app中用户不仅可以播放各种平台上的影视资源进行观看,还可以利用这款app播放自己的本地视频!本地视频最简单的观看方法自然是使用相册,简单直接,但是相册播放视频并没有那么好用,缺乏了许多功能,基本就只有一些基础功能,虽然也不是不能用吧但是使用体验完全没法和这些平台相比!让我们一起看看如何使用这款app观看本地视频吧!爱奇艺播放本地视频教程  1、进入我的页面,点击下载。  2、点击右上角的小圆点。  3、点击本地视频。  4、点击观看本地视频。  5、

利用uniapp实现音频播放功能利用uniapp实现音频播放功能Nov 21, 2023 pm 06:14 PM

利用uniapp实现音频播放功能随着移动互联网的发展,音频播放功能成为了许多应用必不可少的功能之一。而利用uniapp可以方便地实现音频播放功能,而且具有跨平台的特点,可以在不同的移动终端上运行。在进行uniapp开发之前,我们需要先准备好音频资源文件。在本文中,我们将使用一个名为"music.mp3"的音频文件作为示例。首先,我们需要在uniapp的项目中

PHP学习心得:如何进行错误处理PHP学习心得:如何进行错误处理Aug 26, 2023 pm 08:01 PM

PHP学习心得:如何进行错误处理在开发PHP应用程序时,处理错误是一个非常重要的方面。良好的错误处理可以提高代码的稳定性和可靠性,同时也可以更好地帮助我们调试代码和解决问题。本文将介绍一些常见的错误类型和如何进行错误处理的方法,并附带相应的代码示例。语法错误语法错误是在代码编写过程中最常见也最容易发现的错误。它通常会导致PHP解析器无法正确理解代码,从而导致

如何使用PHP实现一个简单的在线视频上传和播放系统如何使用PHP实现一个简单的在线视频上传和播放系统Sep 25, 2023 am 10:55 AM

如何使用PHP实现一个简单的在线视频上传和播放系统随着互联网的发展,视频内容逐渐成为人们获取信息和娱乐的重要方式之一。为了满足用户对视频上传和播放的需求,我们可以使用PHP编程语言来实现一个简单的在线视频上传和播放系统。下面将介绍如何使用PHP来实现这个系统,包括数据库创建、文件上传和视频播放功能。创建数据库首先,我们需要创建一个MySQL数据库来存储用户上

iOS 17.1:如何将自定义插图添加到 Apple Music 播放列表iOS 17.1:如何将自定义插图添加到 Apple Music 播放列表Oct 06, 2023 am 08:01 AM

在目前处于测试阶段的iOS17.1中,Apple增加了用户使用一系列预设选项自定义AppleMusic中的播放列表插图的功能。继续阅读以了解它是如何完成的。以前在iOS中,创建自定义播放列表时,您必须使用由曲目专辑插图组成的基本平铺图像,或上传自定义图像。鉴于您的自定义图形或相关照片并不总是随时可用于播放列表,并且默认的平铺插图相对简单,播放列表可能难以识别并且看起来相当通用。值得庆幸的是,iOS17.1中的Apple现在提供了八种不同的插图样式供您选择,具有几何形状和渐变,播放列表的标题显示在

如何使用PHP播放带有字幕的视频文件?如何使用PHP播放带有字幕的视频文件?Aug 07, 2023 pm 12:13 PM

如何使用PHP播放带有字幕的视频文件?随着互联网技术的发展,视频成为网上内容非常受欢迎的形式之一。而现在,很多视频文件都配有字幕,这让用户更方便地理解和消化视频内容。那么,如何使用PHP来实现在网页中播放带有字幕的视频文件呢?本文将为您详细介绍。首先,我们需要准备以下的环境:一个拥有PHP运行环境的服务器(如Apache或Nginx);一个视频文件(支持

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境