cocos2d-x开发记录:二,基本概念(粒子系统,Scheduler和定时器)
七,粒子系统
1.导言
术语粒子系统是指计算机图形学技术,它使用大量非常小的精灵或其他图形对象来模拟某些种类的“模糊”现象,于传统渲染技术相比,它很难复制。通常是高度混沌无序的系统,自然现象。化学反应过程等。

2.点与象限
在早起的cocos2d-x的版本中,有两个类型的粒子系统:象限和点这两种粒子系统:
◆CCParticleSystemQuad
◆CCParticleSystemPoint
与CCParticleSystemPoint相比CCParticleSystemQuad有这些额外的功能:
◆旋转的粒子,粒子可以围绕它的轴旋转。CCParticleSystemPoint忽略这个属性。
◆粒子能有任何大小。在CCParticleSystemPoint中,如果大小是大于64,它将被视为64。
◆整个系统能使用缩放属性被缩放。
因为CCParticleSystemPoint不支持CCParticleBatchNode,它已从cocos2d-x粒子系统中删除。
3.CCParticleBatchNode
一个CCParticleBatchNode能引用一个并且仅有一个纹理(一个图像文件,一个纹理地图集)。只有在纹理中被包含的CCParticleSystems能被添加到CCSpriteBatchNode。所有CCParticleSystems添加到CCSpriteBatchNode中被OpenGL ES绘制调用一次。如果CCParticleSystems没有被添加到一个CCParticleBatchNode那么OpenGL ES需要为每一个CCParticleSystems来绘制调用,这是非常低效率的。
4.创建一个象限Particle System
CCParticleSystemQuad* m_emitter = newCCParticleSystemQuad(); m_emitter = CCParticleFire::create();
5.Gravity 对 Radius 模式
Gravity(重力)模式
重力模式让粒子系统飞向或远离一个中心点。它的长处是在于允许非常动态有组织的效果。设置的代码如下:
// Gravity Mode this->m_nEmitterMode = kCCParticleModeGravity; // Gravity Mode: gravity this->modeA.gravity = ccp(,-);

以下这些属性只在重力模式下有效:
gravity (一个CGPoint)粒子系统的重力
speed (float) 粒子的发射速度
speedVar (float)速度的方差
tangencialAccel (float)粒子的正切加速度
tangencialAccelVar (float) 正切加速度方差
radialAccel (float)粒子的半径加速度
radialAccelVar (float) 半径加速度方差
Radius(半径)模式
半径模式可以让例子旋转成一个圈。它还允许你创建要么向内或向外冲的螺旋效应的粒子。设置代码如下
// Radius Mode this->m_nEmitterMode = kCCParticleModeRadius; // Radius Mode: startRadius this->modeB.startRadius = ; this->modeB.startRadiusVar = ;//ccp(0,0);

以下这些属性只在半径模式下有效:
startRadius (float) 粒子系统的起始半径
startRadiusVar (float) 起始半径的方差
endRadius (float)粒子系统的结束半径
endRadiusVar (afloat) 结束半径的方差
rotatePerSecond (float)每秒围绕原点旋转度数
rotatePerSecondVar (float) 度数方差
6.所有模式的通用属性
以下是粒子系统的通用属性
startSize: 粒子颗粒的起始像素大小
startSizeVar
endSize: 如果你想要使用kCCParticleStartSizeEqualToEndSize开始大小==最终尺寸。
endSizeVar
startColor (ccColor4F)
startColorVar (ccColor4F)
endColor (ccColor4F)
endColorVar (ccColor4F)
startSpin:仅用于CCParticleSystemQuad
startSpinVar:仅用于CCParticleSystemQuad
endSpin:仅用于CCParticleSystemQuad
endSpinVar:仅用于CCParticleSystemQuad
life:短时间内粒子生存的时间
lifeVar:
angle: (a float)粒子的起始角度
angleVar
positon: (CGPoint)
posVar
centerOfGravity (CGPoint)
系统的通用属性
emissionRate (float)。每秒发射多少粒子
duration (float)。粒子系统存在多少秒(和live属性不同)。使用kCCParticleDurationInfinity表示无限。
blendFunc (ccBlendFunc)。用于系统的OpenGL混合函数
positionType (tCCPositionType)。使用kCCPositionTypeFree(默认)自由移动粒子,或使用kCCPositionTypeGrouped移动一个组。
texture (CCTexture2D)。用于粒子系统的纹理
例子
cocos2d-x附带一些预定义的粒子,在运行时可以定制。列出预定义的粒子
CCParticleFire: Point particle system. Uses Gravity mode.
CCParticleFireworks: Point particle system. Uses Gravity mode.
CCParticleSun: Point particle system. Uses Gravity mode.
CCParticleGalaxy: Point particle system. Uses Gravity mode.
CCParticleFlower: Point particle system. Uses Gravity mode.
CCParticleMeteor: Point particle system. Uses Gravity mode.
CCParticleSpiral: Point particle system. Uses Gravity mode.
CCParticleExplosion: Point particle system. Uses Gravity mode.
CCParticleSmoke: Point particle system. Uses Gravity mode.
CCParticleSnow: Point particle system. Uses Gravity mode.
CCParticleRain: Point particle system. Uses Gravity mode.
八,Scheduler (任务调度)和Timer Callback(定时器回调)
两种不同的回调类型CCScheduler vs NSTimer(objective-c中的定时器)
Scheduler负责触发回调任务
1.一个不同类型的callbacks selectors:
Update selector:它会每帧调用。你能自定义优先级
Custom selector: 它能自定义间隔时间
应该尽可能地避免选择自定义选择器。更新选择器更快和更少的内存消耗。
2.CCScheduler vs NSTimer
Cocos2D调度器提供你游戏的定时事件和调用。你不应该使用NSTimer。应该使用CCScheduler类。
◆CCNode 对象知道如何调用和取消调度事件并且使用Cocos2D调度器有几个独特的优势比使用NSTimer要好
◆只要CCNode不再可见或从场景中移除,调度器就会释放。
◆当Cocos2D 暂停或恢复被rescheduled时,调度器也会释放
◆自从最近一次调度器被调用后开始,下次调用后调度器传递一个单位为milliseconds的间隔时间。这个间隔时间对物理引擎是非常有用的。
◆使用this->scheduleUpdate()会确保你的更新函数将会在每帧渲染之前被调用
因此,CCScheduler可以帮你节省大量的时间并让你专注于你的游戏的机制。
cocos2d-x开发记录:二,基本概念(粒子系统,Scheduler和定时器)的更多相关文章
- Dokuwiki 二次开发记录
Dokuwiki 二次开发记录 [转]http://www.syyong.com/other/Dokuwiki-Secondary-Development-Record.html DokuWiki 是 ...
- SQL开发技巧(二)
本系列文章旨在收集在开发过程中遇到的一些常用的SQL语句,然后整理归档,本系列文章基于SQLServer系列,且版本为SQLServer2005及以上-- 文章系列目录 SQL开发技巧(一) SQL开 ...
- Chrome扩展开发之二——Chrome扩展中脚本的运行机制和通信方式
目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...
- MS CRM 2011的自定义和开发(11)——插件(plugin)开发(二)
http://www.cnblogs.com/StoneGarden/archive/2012/02/06/2339490.html MS CRM 2011的自定义和开发(11)——插件(plugin ...
- .NET Web开发总结(二)
第二章 4.1 Application对象 在.NET开发中具有举足轻重的作用 Application对象的作用和运行机制存储所有用户的信息将一个网站创建一个应用程序一 . 创建一个Global文件 ...
- SQL开发技巧(二) 【转】感觉他写的很好
本文转自: http://www.cnblogs.com/marvin/p/DevelopSQLSkill_2.html 本系列文章旨在收集在开发过程中遇到的一些常用的SQL语句,然后整理归档,本系列 ...
- CozyRSS开发记录9-快速实现一个RSS解析器
CozyRSS开发记录9-快速实现一个RSS解析器 1.再读RSS标准 既然需要自己实现一个RSS解析器,那自然需要仔细的读一读RSS的标准文档.在网上随便找了两份,一份英文一份中文: http:// ...
- ASP.NET MVC5 网站开发实践(二) Member区域 - 修改及删除文章
上次做了显示文章列表,再实现修改和删除文章这部分内容就结束了,这次内容比较简单,由于做过了添加文章,修改文章非常类似,就是多了一个TryUpdateModel部分更新模型数据. 目录: ASP.N ...
- ASP.NET MVC5 网站开发实践(二) Member区域 - 全部文章列表
显示文章列表分两块,管理员可以显示全部文章列表,一般用户只显示自己的文章列表.文章列表的显示采用easyui-datagrid.后台需要与之对应的action返回json类型数据 目录 ASP.N ...
- ASP.NET MVC5 网站开发实践(二) Member区域 - 添加文章
上次把架构做好了,这次做添加文章.添加文章涉及附件的上传管理及富文本编辑器的使用,早添加文章时一并实现. 要点: 富文本编辑器采用KindEditor.功能很强大,国人开发,LGPL开源,自己人的好东 ...
随机推荐
- libcurl库进行http通讯-开篇
从今天開始介绍一些经常使用的库. 首先就来写一写关于libcurl库. libcurl主要功能就是用不同的协议连接和沟通不同的server~也就是相当封装了的sockPHP 支持libcurl(同意你 ...
- Ubuntu解压缩zip,tar,tar.gz,tar.bz2
ZIP zip可能是目前使用得最多的文档压缩格式.它最大的优点就是在不同的操作系统平台,比如Linux, Windows以及Mac OS,上使用.缺点就是支持的压缩率不是很高,而tar.gz和tar. ...
- 使用 C# 开发智能手机软件:推箱子(十二)
这是"使用 C# 开发智能手机软件:推箱子"系列文章的第十二篇.在这篇文章中,介绍 Window/AboutDlg.cs 源程序文件. 这个源程序文件包括 AboutDlg 类,该 ...
- 〖Windows〗zigbee实验之cygwin编译TestSimpleMac并测试通信
1. 开发环境及工具: 1) cygwin安装包下载地址:cygwin-files.zip >>安装时选择本地目录(Select local Package directory),其 ...
- Content-Length实体的大小
•15.2 Content-Length实体的大小 Content-Length首部指出了报文中实体主体的字节大小,这个大小包含了所有内容的编码,如对文本进行gzip压缩的话,那么Content-Le ...
- mysql字符集和字符排序
mysql的字符集和字符序: 字符序:字符序(Collation)是指在同一字符集内字符之间的比较规则 一个字符序唯一对应一种字符集,但一个字符集可以对应多种字符序,其中有一个是默认字符序 ...
- [ACM] POJ 3258 River Hopscotch (二分,最大化最小值)
River Hopscotch Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 6697 Accepted: 2893 D ...
- hdoj 2199 Can you solve this equation? 【二分枚举】
题意:给出一个数让你求出等于这个数的x 策略:如题. 由于整个式子是单调递增的.所以能够用二分. 要注意到精度. 代码: #include <stdio.h> #include <s ...
- Android倒计时CountDownTimer小记
Android 超简便的倒计时实现: CountDownTimer CountDownTimer由系统提供 查资料的时候 发现了CountDownTimer这个类之后 果断抛弃了曾经的倒计时做法 功 ...
- [ubuntu]为ubuntu设立“任务管理器”的组合键
在windows下面,我们可以方便的使用ctrl+alt+delete调出任务管理器,那么在ubuntu下面如何实现呢?这里我们介绍两种方法:1.在终端下运行: 代码:gconf-editor 找到: ...