整体来说,cocos2dx粒子特效模块的实现还是比较简单的,主要涉及3个类,分别封装了不同的功能。
CCParticleBatchNode,粒子特效渲染在这个类里边完成。
CCParticleSystem,粒子特效坐标计算在这个类完成,它里边包含有粒子特效2个模式的所有参数。
粒子系统使用的难度在于参数的设置而不在于代码。参数可以在编辑器里边设置,代码在这里就略了。
扩展:
整个粒子特效模块封装的东西已经足够的明显了,如果需要调整粒子特效坐标的计算修改CCParticleSystem的update就可以了,当然也需要重新写一个CCParticleStystemQuad,或者直接修改CCParticleStystemQuad继承的父类。到这我不由得想,如果将继承关系改成包含关系,那么扩展的话那不就只需要重新写另一个CCParticleSystem就可以了么?继承是松耦合的么?
粒子特效实现可以简单的分解成三个过程:发射器坐标计算,更新坐标,渲染。这三个过程对应三个类。
CCParticleBatchNode,粒子特效渲染在这个类里边完成。
CCParticleSystem,粒子特效坐标计算在这个类完成,它里边包含有粒子特效2个模式的所有参数。
CCParticleSystemQuad,负责更新粒子坐标的类,也是整个粒子特效类继承体系的最高层,在这个层中创建粒子特效只能是默认的重力模式,如果需要创建半径模式的粒子特效需要从编辑器中设置并生成一个plist文件,最后指定从plist文件加载就可以指定创建的模式。
隐隐约约我看到了mvc模式的影子。
粒子系统使用的难度在于参数的设置而不在于代码。参数可以在编辑器里边设置,代码在这里就略了。
扩展:
整个粒子特效模块封装的东西已经足够的明显了,如果需要调整粒子特效坐标的计算修改CCParticleSystem的update就可以了,当然也需要重新写一个CCParticleStystemQuad,或者直接修改CCParticleStystemQuad继承的父类。到这我不由得想,如果将继承关系改成包含关系,那么扩展的话那不就只需要重新写另一个CCParticleSystem就可以了么?继承是松耦合的么?