bbframework入门之路【八】粒子系统和音效

【正文】

一款游戏除了动作和动画之外,在视觉上最容易提升画面效果的当属粒子系统了。关于粒子系统的详细介绍我们在这里就不在阐述,因为那不是重点,有兴趣的可以自己百度了解粒子系统。

bbframework框架提供了“P.newParticle()”函数来播放粒子文件。cocos2D引擎支持的是“.plist”格式的粒子文件,plist文件可以通过专门的粒子编辑器来导出。newParticle()函数有三个参数,第一个是粒子plist文件的位置,我们同样是放在X4或者X2里面。第二个和第三个参数分别是粒子系统创建位置的x和y值。要移除一个粒子系统我们同样通过调用粒子系统对象的“remove()”函数。粒子系统其实也是一个节点对象,同样支持放大缩小、动作、和隐藏显示等操作。

local particleObj     = P.newParticle("particle/black/snow.plist", 480, 500):to(self, 10)

根据以上代码,我们在坐标(480,500)的位置创建了一个下雪的粒子系统,刷新模拟器我们就可以看到效果了。

要了解粒子系统的详细使用,推荐参考“UParticle.lua”文件。

一款游戏除了画面,还需要动听的背景音乐和激动人心的音效。在bbframework框架中,对于声音的控制都是通过“sound”这个全局对象来实现的,“sound.lua”是个静态类,关于sound的操作我们可以参考“SoundBase.lua”和“sound.lua”两个文件。

bbframework提供了“sound.playMusic()”函数来播放游戏的背景音乐,游戏在同一时刻只能有一个背景音乐,我们想要切换背景音乐只要再次调用这个函数就可以了,且背景音乐是默认循环播放的。playMusic()函数接收一个字符串类型的参数,它是我们要播放的背景音乐的文件路径。但是playMusic()函数值得注意的是每次调用它都重新播放指定的音频文件,哪怕它和正在播放的背景音乐是同一个文件。为了解决遇到相同背景音乐,我们不重新播放的问题,bbframework提供了“sound.switchMusic()”函数,它同样接收一个音频文件路径作为参数。所不同的是当它接收到的文件路径和当前正在播放的背景音乐一样时,它遍不执行。有了背景音乐,我们可以通过“sound.stopMusic()”来停止。

-- 播放背景音乐(强制切换背景音乐)
sound.playMusic()

-- 播放背景音乐(遇到相同的不切换)
sound.switchMusic()

-- 停止背景音乐
sound.stopMusic()

-- 暂停播放背景音乐
sound.pauseMusic()

-- 恢复背景音乐
sound.resumeMusic() 

-- 启用背景音乐
sound.enableMusic()

-- 禁用背景音乐
sound.disableMusic()

-- 启用声音引擎
sound.enable()

-- 禁用声音引擎
sound.disable()

除了背景音乐,游戏里面还有那些短促的音效,比如打斗的声音、按钮点击的声音。同样bbframework提供了“sound.playSound()”和“sound.playEffect()”两个函数来播放音效,这两个函数同样接收一个字符串作为参数,字符串的内容是音效文件的路径。除此之外,这两个函数还会返回音效的句柄,供我们操作音效。我们可以通过“sound.stopSound()”来停止指定的音效,stopSound()函数接收一个音效句柄作为参数,这个音效将会被停止。当我们要停止当前播放的所有音效时,我们无需手动遍历当前播放的所有音效句柄,然后逐个停止。bbframework提供了“sound.stopAllSounds()”函数来停止所有的音效。

除此之外,对于有些音频文件我们需要预加载再播放的。bbframework提供了“sound.preloadMusic()”和“sound.unloadMusic()”函数来预加载和卸载背景音乐,通过“sound.preloadSound()”和“sound.unloadSound()”来预加载和卸载音效。

对于音效的控制,我们比较常用的也就以上介绍的这些函数,关于函数的详细使用我们可以参考前文提过的“sound.lua”和“SoundBase.lua”这两个文件。

下一次我们介绍下游戏场景的跳转实现和场景切换的效果动画以及Loading界面的使用,在Loading中我们再附加关于资源的预加载和卸载是如何实现的。

【脚注】

宝宝巴士-快乐童年!

时间: 2024-11-07 10:48:13

bbframework入门之路【八】粒子系统和音效的相关文章

bbframework入门之路【三】

[正文] 上一篇我们已经了解了一部分项目开发相关的目录结构,今天我们依然继续为大家介绍我们这套框架的一些访问更为频繁的目录结构.也就是“main/bbframework/res”和“main/bbframework/script/app”底下的目录结构. 话不多说,我们先来看下“main/bbframework/res”(简称:“res”),也就是资源文件夹. 上图就是res文件夹的子目录,其中“ccb”里面是用于CocosBuilder开发方式使用的资源路径,简称为“ccb”.因为现在还没有使

bbframework入门之路【五】触控绑定

[正文] 前面我们介绍了如何在bbframework项目中创建我们自己的模块,也在场景里面添加了精灵节点,但是讲到编程就少不了要说到事件.因为我们是做手机游戏,而现在的手机又普遍都是大屏的智能触控手机,所以我们游戏涉及最多的当属触控操作了.今天我们便来简单介绍下bbframework的触控,帮助我们实现游戏的交互操作. 接着上一次的内容,我们在Layer层上面放置了两个节点,代码如下: ---------------------- -- 结点渲染 ---------------------- -

bbframework入门之路【四】

[正文] 前面我们基本上已经将bbframework开发的必备工作都已经做好了,今天我们就来往我们那乌漆麻黑的场景里面添加点东西,让游戏慢慢的像个游戏.首先我们来看下一个空的Layer(层)所应该有的东西: --[[!-- 场景层类,定义层相关操作方法及逻辑实现. - 定义场景层功能方法. ]] ---------------------- -- 类 ---------------------- local M = classLayerTouch("Main") -----------

bbframework入门之路【二】

[附加信息] 上一篇我们已经介绍了如何搭建bbframework的开发环境,其中我们还讲到了Sublime Text这款编辑器,关于Sublime的用法,我们可以参照http://www.cnblogs.com/wuguanglei/p/4286550.html这篇博文,详细的我们就不再这里阐述了. [正文] 今天我们一起来看下关于公司常用资源的存放目录和我们项目目录的组成结构,了解这些目录结构,是我们进行高效快速开发的必要条件,虽然不起眼,但也不能忽视. 首先,我们先来看下SVN上面的目录结构

bbframework入门之路【一】

[前言] 众所周知,目前手游市场上大部分的游戏都是通过Cocos2D-X这个引擎来开发的.Cocos2D-X简称“-x”是从Cocos2D-iphone衍生而来的,-x是使用C++编程语言搭建的框架,但是会C++的人都知道C++那繁琐的语法总是让程序员(猿)带着那么点淡淡的忧伤.近几年编程开始走向脚本化,于是乎,Cocos2D也出现了不同的版本.有用Lua搭建的Cocos2D-Lua,或者叫做quick-x:也有用Javascript搭建的Cocos2D-Js.然后随着平台的多样化,也出现了以C

bbframework入门之路【六】常用的动作和动画

[正文] 今天我们来介绍下游戏开发中必不可少的东西,那就是动作和动画.bbframework除了支持Cocos2D-X里面提供的动作之外,我们自己也根据实际项目需求往框架里面新增了不少的动作,所以这部分的内容比较多,我们简单的列举几个常用的动作和一些常用的和动作相关的函数,剩下的大家可以自行参考框架的“UAction.lua”文件,UAction里面包含了bbframework提供的所有动作,包括每个动作的案例代码和详细的注释. 话不多说,我们直接进入主题.我们bbframework的动作是通过

小猪的Android入门之路 Day 8 part 2

小猪的Android入门之路 Day 8 part 2 Android网络编程浅析--Android访问网络资源 --转载请注明出处:coder-pig 本节引言: 在part 1中我们学习了网络交互中用得较多的xml文件的相关概念,以及在Android中常用的 解析XML三种不同形式,分别SAX,DOM,Pull三种不同的解析方式;而在part 2中我们将会 讲解我们的应用如何去获取网络上的资源,分别是图片,HTML代码,XML代码和JSON数据; 好了,废话就这么多,开始本节的课程吧!从这p

小猪的Android入门之路 Day 8 part 4

小猪的Android入门之路 Day 8 part 4 Android网络编程浅析--Android网络数据的上传 --转载请注明出处:coder-pig 本节引言: 在part 3中我们已经学习了Android网络数据的下载,难点是多线程断点续传下载; 有下载,当然也有上传啦,本节就来研究下Android中的网络数据的上传! 1.使用GET或者Post方式上传数据给服务器 2.使用开源框架HttpClient上传数据到服务区 3.发送xml数据给服务器 4.通过Http协议上传文件 5.Web

小猪的Android入门之路 Day 4 - part 4

小猪的Android入门之路 Day 4 - part 4 Android事件处理机制之--事件处理机制拾遗 ------------转载请注明出处--coder-pig 本节引言: 在前面三个部分中,对于android的事件处理机制的学习已经学得七七八八了, 基于监听与回调的时间处理机制,以及使用Handler传递信息的机制都已经学了; 在最后这个部分中会对一些小的知识点进行补充,比如触摸事件的两种形式, Configuration类以及异步任务AsyncTask进行讲解,好了,开始本节的课程