读书频道 > 网站 > 网页设计 > Cocos2D-X游戏开发技术精解(第2版)
8.5 背景音乐操作函数
15-11-25    下载编辑
收藏    我要投稿   
本书共15章,主要内容有:Cocos2D-X引擎介绍;如何建立跨平台的开发环境;了解引擎的核心模块—渲染框架;介绍如何将动态画面,呈现给玩家等动作功能;用户交互;二维游戏中背景的实现方法和技术;Box2D物理引擎立即去当当网订购

在介绍了CocosDenshion声音模块的组成之后,就要来看看具体的用法了。按照游戏声音的划分,先介绍背景音乐的处理方法。在下一个章节再来介绍声音音效的处理方法。希望此时,读者已经准备了一些不同格式的声音文件。在接下来的内容中,读者将有机会通过引擎来操作它们。

由于在CocosDenshion的代码结构中采用了易于使用的外观模式,开发者只需关心其上层的函数方法。这也就是类SimpleAudioEngine的函数。我们先从此类的静态函数开始介绍。

//获得SimpleAudioEngine的单例对象,将会在第一次调用时创建对象
static SimpleAudioEngine *  getInstance ()

//释放单例对象
static void  end ()

声音引擎在游戏中将会是一个单例对象。开发者可以使用函数getInstance()来调用它。如果是第一次调用,则会首先创建此对象。而函数end()是用来释放声音引擎对象的。这是在游戏退出时,必须要做的工作。

技巧:最好将函数end()写在类的析构函数当中。这样当游戏退出时,将会自动地释放声音引擎对象。

利用函数getInstance(),开发者可以在代码中任何地方获得声音引擎对象。这样的话,也就可以在游戏中任何时机来操作声音。下面来看类SimpleAudioEngine与游戏背景音乐有关的函数,见代码8-1。

代码8-1  类SimpleAudioEngine中游戏背景音乐的操作函数

//预先加载背景音乐
void  preloadBackgroundMusic (const const char* pszFilePath)
 
//播放背景音乐,参数为:音乐文件路径和名称,是否循环播放
void  playBackgroundMusic (const const char* pszFilePath, bool bLoop)

//播放背景音乐,参数为:音乐文件路径和名称
void  playBackgroundMusic (const const char* pszFilePath)

//停止背景音乐的播放,参数为:是否释放声音资源
void  stopBackgroundMusic (bool bReleaseData)

//停止背景音乐的播放
void  stopBackgroundMusic ()

//暂停背景音乐的播放
void  pauseBackgroundMusic ()

//恢复背景音乐的播放
void  resumeBackgroundMusic ()
 
//回放背景音乐的播放 
void  rewindBackgroundMusic ()

//返回是否将要播放背景音乐
bool  willPlayBackgroundMusic ()
 
//返回是否正在播放背景音乐
bool  isBackgroundMusicPlaying ()
  
//获得当前背景音乐播放音量
float  getBackgroundMusicVolume ()

//设置当前背景音乐播放音量
void  setBackgroundMusicVolume (float volume)

代码8-1展示了类SimpleAudioEngine中游戏背景音乐的操作函数。每个函数都配有注释,只要使用过播放器的读者都会理解其含义。我们就以日常生活中的录音机为例。

(1)首先,要准备一盘磁带。这其实就是声音文件。在听取音乐之前,是不是要把磁带放到机器中?所以引擎中有一个预加载函数preloadBackgroundMusic。它主要是为了将声音文件准备好,以便在游戏中可以直接播放。

技巧:最好在游戏开始时,就将声音文件预加载,为将来的播放做好准备。

(2)然后,在磁带放入录音机后,就可以按下播放、暂停或者回放的按钮。在声音模块中同样也提供了这些方法,不再啰嗦了。

(3)最后,在听到声音的时候,人们可能会调节一下音量的大小。引擎中也提供了两个与音量大小有关的函数。

说明:与录音机相比,声明模块中还没有快进和倒退的功能。

细心读者可能会发现,所有与背景音乐有关的参数只是一个声音文件信息。这也是游戏中惯用的手法,主要在于下面两个原因。

(1)手持设备的资源有限,只有一个音道并不能同时播放多个音源。

(2)游戏里的声音大多数是由一个背景音乐加上多个声音效果组成的。

虽然在函数设计上存在限制,但并不意味着读者不可以同时播放多个背景音乐。开发者可以修改源代码来实现多个背景音乐同时播放的效果。只是由于不同平台的表现效果,很难保证能够得到预期的效果。笔者建议尽量在同一时间下,只播放一个背景音乐。与背景音乐相比,声音音效则更为灵活。下面来看声音效果在引擎中的使用方法。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站