除了使用Cocos2d-JS的11种内置粒子系统外,我们还可以通过创建ParticleSystem对象,并设置属性实现自定义粒子系统,通过这种方式完全可以实现我们说需要的各种效果的粒子系统。使用ParticleSystem自定义粒子系统至少有两种方式可以实现:代码创建和plist文件创建。
代码创建粒子系统需要手工设置这些属性,维护起来非常困难,我们推荐使用Particle Designer等粒子设计工具进行所见即所得的设计,这些工具一般会生成一个描述粒子的属性类表文件plist,然后通过类似下面的语句加载:
var particleSystem = new cc.ParticleSystem("res/snow.plist");
snow.plist是描述运动的属性文件,plist文件是一种XML文件,参考代码如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3. <plist version="1.0">
  4. <dict>
  5. <key>angle</key>
  6. <real>270</real>
  7. <key>angleVariance</key>
  8. <real>5</real>
  9. <key>blendFuncDestination</key>
  10. <integer>771</integer>
  11. <key>blendFuncSource</key>
  12. <integer>1</integer>
  13. <key>duration</key>
  14. <real>-1</real>
  15. <key>emitterType</key>
  16. <real>0.0</real>
  17. <key>finishColorAlpha</key>
  18. <real>1</real>
  19. <key>finishColorBlue</key>
  20. <real>1</real>
  21. <key>finishColorGreen</key>
  22. <real>1</real>
  23. <key>finishColorRed</key>
  24. <real>1</real>
  25. <key>finishColorVarianceAlpha</key>
  26. <real>0.0</real>
  27. <key>finishColorVarianceBlue</key>
  28. <real>0.0</real>
  29. <key>finishColorVarianceGreen</key>
  30. <real>0.0</real>
  31. <key>finishColorVarianceRed</key>
  32. <real>0.0</real>
  33. <key>finishParticleSize</key>
  34. <real>-1</real>
  35. <key>finishParticleSizeVariance</key>
  36. <real>0.0</real>
  37. <key>gravityx</key>
  38. <real>0.0</real>
  39. <key>gravityy</key>
  40. <real>-10</real>
  41. <key>maxParticles</key>
  42. <real>700</real>
  43. <key>maxRadius</key>
  44. <real>0.0</real>
  45. <key>maxRadiusVariance</key>
  46. <real>0.0</real>
  47. <key>minRadius</key>
  48. <real>0.0</real>
  49. <key>minRadiusVariance</key>
  50. <real>0.0</real>
  51. <key>particleLifespan</key>
  52. <real>3</real>
  53. <key>particleLifespanVariance</key>
  54. <real>1</real>
  55. <key>radialAccelVariance</key>
  56. <real>0.0</real>
  57. <key>radialAcceleration</key>
  58. <real>1</real>
  59. <key>rotatePerSecond</key>
  60. <real>0.0</real>
  61. <key>rotatePerSecondVariance</key>
  62. <real>0.0</real>
  63. <key>rotationEnd</key>
  64. <real>0.0</real>
  65. <key>rotationEndVariance</key>
  66. <real>0.0</real>
  67. <key>rotationStart</key>
  68. <real>0.0</real>
  69. <key>rotationStartVariance</key>
  70. <real>0.0</real>
  71. <key>sourcePositionVariancex</key>
  72. <real>1200</real>
  73. <key>sourcePositionVariancey</key>
  74. <real>0.0</real>
  75. <key>speed</key>
  76. <real>130</real>
  77. <key>speedVariance</key>
  78. <real>30</real>
  79. <key>startColorAlpha</key>
  80. <real>1</real>
  81. <key>startColorBlue</key>
  82. <real>1</real>
  83. <key>startColorGreen</key>
  84. <real>1</real>
  85. <key>startColorRed</key>
  86. <real>1</real>
  87. <key>startColorVarianceAlpha</key>
  88. <real>0.0</real>
  89. <key>startColorVarianceBlue</key>
  90. <real>0.0</real>
  91. <key>startColorVarianceGreen</key>
  92. <real>0.0</real>
  93. <key>startColorVarianceRed</key>
  94. <real>0.0</real>
  95. <key>startParticleSize</key>
  96. <real>10</real>
  97. <key>startParticleSizeVariance</key>
  98. <real>5</real>
  99. <key>tangentialAccelVariance</key>
  100. <real>0.0</real>
  101. <key>tangentialAcceleration</key>
  102. <real>1</real>
  103. <key>textureFileName</key>
  104. <string>snow.png</string>
  105. </dict>
  106. </plist>

在上述的plist文件描述的属性和属性值都是成对出现,其中<key>标签描述的是属性,<real>描述的属性值。
plist文件中textureFileName属性指定了纹理图片,纹理图片宽高必须是2的n次幂,大小不要超过64x64像素,在美工设计纹理图片时候,不用关注太多细节,例如:设计雪花纹理图片时候,按照雪花是有6个角的,很多人会设计为下图所示的样式,而事实上我们需要的下图所示的渐变效果的圆点。

雪花图片
 
雪花粒子纹理图片

提示 描述粒子属性的plist文件,可以通过粒子系统设计工具生成,有关粒子系统工具使用大家可以参考本系列丛书的工具卷(《Cocos2d-JS实战(卷Ⅳ):工具详解》)。
下面我们通过实现如下图所示的下雪粒子系统,介绍一下自定义粒子系统的实现。

下雪粒子系统实例

图中所示的下雪实例,使用plist文件创建,主要代码如下:

  1. var HelloWorldLayer = cc.Layer.extend({
  2. ctor: function () {
  3. //////////////////////////////
  4. // 1. super init first
  5. this._super();
  6. var size = cc.director.getWinSize();
  7. var bg = new cc.Sprite("res/background-1.png");
  8. bg.x = size.width / 2;
  9. bg.y = size.height / 2;
  10. this.addChild(bg);
  11. var particleSystem = new cc.ParticleSystem("res/snow.plist");
  12. particleSystem.x = size.width / 2;
  13. particleSystem.y = size.height - 50;
  14. this.addChild(particleSystem);
  15. return true;
  16. }
  17. });

从代码可见plist文件创建粒子系统要比代码创建简单很多,这主要是因为采用了plist描述粒子属性。

更多内容请关注最新Cocos图书《Cocos2d-x实战:JS卷——Cocos2d-JS开发》

本书交流讨论网站:http://www.cocoagame.net

欢迎加入Cocos2d-x技术讨论群:257760386

更多精彩视频课程请关注智捷课堂Cocos课程:http://v.51work6.com

《Cocos2d-x实战 JS卷》现已上线,各大商店均已开售:

京东:http://item.jd.com/11659698.html

欢迎关注智捷iOS课堂微信公共平台,了解最新技术文章、图书、教程信息

Cocos2d-JS自定义粒子系统的更多相关文章

  1. cocos2d JS 自定义事件分发器(接收与传递数据) eventManager

    简而言之,它不是由系统自动触发,而是人为的干涉 较多情况用于传递数据 var _listener1 = cc.EventListener.create({ event: cc.EventListene ...

  2. js自定义验证码

    分享一个js自定义的验证码 window.onload = function () {     var code;     $('.changePassword').click(function () ...

  3. js自定义弹出框

    js自定义弹出框: 代码如下 <html> <head><title>自定义弹出对话框</title> <style type ="te ...

  4. 超酷HTML5 Canvas图表应用Chart.js自定义提示折线图

    超酷HTML5 Canvas图表应用Chart.js自定义提示折线图 效果预览 实例代码 <div class="htmleaf-container"> <div ...

  5. 与你相遇好幸运,Sails.js自定义responses

    在 /api/responses/ 新建文件 >serviceDBError.js 自定义的数据库错误 >serviceError.js  自定义的数据错误 >serviceSucc ...

  6. Cocos2d-x中自定义粒子系统

    除了使用Cocos2d-x的11种内置粒子系统外,我们还可以通过创建ParticleSystemQuad对象,并设置属性实现自定义粒子系统,通过这种方式完全可以实现我们说需要的各种效果的粒子系统.使用 ...

  7. jquery.validate.js默认配置,jquery.validate.js自定义提示信息

    jquery.validate.js默认配置,jquery.validate.js自定义提示信息 配置jQuery.validator默认的处理方法 >>>>>>& ...

  8. web前端对上传的文件进行类型大小判断的js自定义函数

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. js自定义事件、DOM/伪DOM自定义事件

    一.说明.引言 我JS还是比较薄弱的,本文的内容属于边学边想边折腾的碎碎念,可能没什么条理,可能有表述不准确的地方,可能内容比较拗口生僻.如果您时间紧迫,或者JS造诣已深,至此您就可以点击右侧广告(木 ...

随机推荐

  1. Codeforces Gym 100803D Space Golf 物理题

    Space Golf 题目连接: http://codeforces.com/gym/100803/attachments Description You surely have never hear ...

  2. Codeforces Good bye 2015 B. New Year and Old Property dfs 数位DP

    B. New Year and Old Property 题目连接: http://www.codeforces.com/contest/611/problem/B Description The y ...

  3. 使用.net(C#)发送邮件学习手册(带成功案例)

    使用.net(C#)发送邮件学习手册(带成功案例) 1.了解发送邮件的三种方式 2.实例介绍使用client.DeliveryMethod = System.Net.Mail.SmtpDelivery ...

  4. 2013 French Open Semifinal Press

    http://v.youku.com/v_show/id_XNTY4MTgzOTEy.html?firsttime=0 Novak, can you take any confirt   for qu ...

  5. [AngularJS] Hijacking Existing HTML Attributes with Angular Directives

    Angular overrides quite a few existing HTML elements and attributes. This can be a useful technique ...

  6. 写一个自己定义进度颜色和圆形转动的ProgressBar(具体介绍)

    先上图: 我们得自己定义ProgressBar的样式 <span style="white-space:pre"> </span><style nam ...

  7. cocos2d win7 安卓环境配置开发

    相关工具 下载 Android SDK 下载和安装 Android NDK版本不要选r9的.用r8e!r9会报错 下载安装JDK版本是 jdk-7u13-windows-x64.exe 下载和安装Cy ...

  8. 使用@media实现IE hack的方法

    文章简介:众所周知,有些时候为了实现IE下的某些效果与现代浏览器一致,我们不得不使用一些hack手段来实现目的.比如说使用“\0”,“\”和“\9”来仅让IE某些版本识别,而对于现代浏览器来说,他会直 ...

  9. 如何在Fedora或CentOS上使用Samba共享

    如今,无论在家里或者是办公场所,不同的电脑之间共享文件夹已不是什么新鲜事了.在这种趋势下,现代操作系统通过网络文件系统的方式使得电脑间数据的交换变得简单而透明.如果您工作的环境中既有微软的Window ...

  10. git的.gitignore配置

    .gitignore 配置文件用于配置不需要加入版本管理的文件,配置好该文件可以为我们的版本管理带来很大的便利,以下是个人对于配置 .gitignore 的一些心得. 1.配置语法: 以斜杠“/”开头 ...