薄情先生|一文教你Cocos Creator如何实现音频池工具的封装

引言关键词:音效管理、音频池、Cocos Creator
多媒体内容(文本、音频、视频、图片、动画等)是一款应用能否在“同质化”严重的市场中脱颖而出的关键 。
【薄情先生|一文教你Cocos Creator如何实现音频池工具的封装】本文将封装一个音频池组件 , 以期帮助大家简化音频工作流程 。
一、音频播放方式首先 , 我们必须了解Cocos Creator中音频播放的两种方式 , 如下图所示:
薄情先生|一文教你Cocos Creator如何实现音频池工具的封装总结下就是 , Cocos Creator提供两种音频播放方式 , AudioEngine 与 AudioSource 都能播放音频 , 它们的区别在于 AudioSource 是组件 , 可以添加到场景中 , 由编辑器设置 。 而 AudioEngine 是引擎提供的纯 API , 只能在脚本中进行调用 。
共同点:本质都是处理 AudioClip音频资源 , 需要在Cocos Creator编辑器中挂载组件 。
二、组件化工作流程1.AudioSource组件使用步骤:首先我们来回顾一下使用 AudioSource 的工作流程 , 随后分析优缺点:
在【层级管理器】上创建一个空节点 , 选中空节点 , 在【属性检查器】最下方点击【添加组件】 -> 其他组件 -> AudioSource 来添加 AudioSource 组件 。
将【资源管理器】中所需的音频资源拖拽到 AudioSource 组件的 Clip 中 , 如下所示:
薄情先生|一文教你Cocos Creator如何实现音频池工具的封装通过脚本控制 AudioSource 组件:
薄情先生|一文教你Cocos Creator如何实现音频池工具的封装选择相对应的节点 , 添加脚本组件 。 然后将带有 AudioSource 组件的节点拖拽到脚本组件中的 Audio Source 上 , 如下所示:
薄情先生|一文教你Cocos Creator如何实现音频池工具的封装引用 audioSource 以控制音效 。
2.AudioSource组件优缺点【1】优点:提供面向设计和开发的两种工作流 , 是一种简单顺畅的分工合作方式 。 记得吗?Cocos Creator 是以内容创作为核心的游戏开发工具 , 在 Cocos2d-x 基础上实现了彻底脚本化、组件化和数据驱动等特点 。
【2】缺点:重复工作:每个音频都需要重复上述多个操作步骤 。 维护困难:若音频挂载在不同的节点中 , 不利于定位与维护 。
【3】特点:挂载在节点上的 AndioSource 可以跟随节点的生命周期 。 优点:节点销毁时 , 挂载的 AndioSource 可以跟随销毁 , 无需额外调用方法 。 缺点:节点频繁创建与销毁时 , AndioSource 也跟着频繁加载销毁 。
三、工具化工作流程清楚组件化工作流程的优缺点后 , 我们尝试工具化工作流程 , 工具代码如下:
分为两个阶段:*【1】预加载preloadAllAudio :遍历枚举 AUDIO_ENUM , 依次加载音频资源 AudioClip , 封装为 AudioSource 后放入 _audios, 后者其实就是一个简单的空对象 。 【2】播放或停止 control:根据枚举字符串 , 从_audios 中获取 AudioSource , 调用 play 或 stop。
利用这个工具类 , 工作流程变为:【1】预加载:在应用初始化时调用 preloadAllAudio(只需要一次);
【2】将音频放置到资源管理器对应的目录;
【3】在枚举 AUDIO_ENUM 中添加音频文件名 , 如下所示:
【4】引用工具类以控制音效缺点:设计与开发工作流未分离;优点:减少重复工作 , 增强可维护性 。


推荐阅读