在粒子效果中,通常存在一个对所有粒子进行统一调度的引擎,称作粒子系统(partical system),它负责粒子的产生,随时间改变粒子的状态,以及最后回收不再需要的粒子。如果按照粒子系统的维数来区分,粒子系统可以分为二维粒子系统与三维粒子系统两种。

 Cocos2d-x为我们提供的粒子系统由ParticleSystem类实现。与其他的粒子引擎一样,ParticleSystem实现了对粒子的控制与调度,对粒子的操作包括如下几种。
 产生粒子:这部分也被称作粒子发射器(emitter)。
 更新粒子状态:引擎会随时间更新粒子的位置、速度以及其他状态。
 回收无效粒子:当粒子的生存周期结束后,就会被系统回收。
 因此,为了创建一个粒子效果,我们需要定义粒子如何产生以及状态如何改变。
 ParticleSystem提供了多种初始化方式。我们可以通过指定粒子数量来创建一个粒子系统,然后需要设置粒子的外观(通常为一张小纹理)、发射方式与运动方式。创建一个全新的粒子系统通常较为烦琐,大多数情况下,我们更乐意把粒子系统的参数保存在文件中,而Cocos2d-x就是使用Plist文件来保存这些参数的。暂时抛开粒子效果文件Plist不谈,如果我们已经拥有一个粒子效果文件,就可以利用ParticleSystem的初始化方法直接从文件中导入一个粒子效果,相关代码如下:
 bool initWithFile(const char *plistFile)
 static ParticleSystem* create(const char *plistFile)

实际上,引擎已经内置了若干粒子效果,它们作为粒子系统的样例,只需要简单的几行代码就可以创建,正如Action为我们做的一样。这些粒子效果的代码放在Cocos2d-x引擎目录下"particle_nodes"目录中的"ParticleSystem.cpp"文件中。

内置粒子系统

内置的11粒子系统说明如下:

ParticleExplosion。爆炸粒子效果,属于半径模式。

ParticleFire。火焰粒子效果,属于重力径模式。

ParticleFireworks。烟花粒子效果,属于重力模式。

ParticleFlower。花粒子效果,属于重力模式。

ParticleGalaxy。星系粒子效果,属于半径模式。

ParticleMeteor。流星粒子效果,属于重力模式。

ParticleSpiral。漩涡粒子效果,属于半径模式。

ParticleSnow。雪粒子效果,属于重力模式。

ParticleSmoke。烟粒子效果,属于重力模式。

ParticleSun。太阳粒子效果,属于重力模式。

ParticleRain。雨粒子效果,属于重力模式。

这11种粒子系统每一个都有如下两个create函数,通过create函数可以创建粒子对象。

static ParticleExplosion * create ()
 static ParticleExplosion * createWithTotalParticles (int numberOfParticles)

其中createWithTotalParticles 函数中的numberOfParticles是粒子的初始化个数。

还有这11种粒子的属性,根据它的发射模式不同也会有所不同。