除了使用Cocos2d-JS的11種內置粒子系統外,咱們還能夠經過建立ParticleSystem對象,並設置屬性實現自定義粒子系統,經過這種方式徹底能夠實現咱們說須要的各類效果的粒子系統。使用ParticleSystem自定義粒子系統至少有兩種方式能夠實現:代碼建立和plist文件建立。
代碼建立粒子系統須要手工設置這些屬性,維護起來很是困難,咱們推薦使用Particle Designer等粒子設計工具進行所見即所得的設計,這些工具通常會生成一個描述粒子的屬性類表文件plist,而後經過相似下面的語句加載:
var particleSystem = new cc.ParticleSystem("res/snow.plist");
snow.plist是描述運動的屬性文件,plist文件是一種XML文件,參考代碼以下:
html
[html] view plaincopy微信
<?xml version="1.0" encoding="UTF-8"?> app
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 工具
<plist version="1.0"> 網站
<dict> this
<key>angle</key> spa
<real>270</real> .net
<key>angleVariance</key> 設計
<real>5</real> orm
<key>blendFuncDestination</key>
<integer>771</integer>
<key>blendFuncSource</key>
<integer>1</integer>
<key>duration</key>
<real>-1</real>
<key>emitterType</key>
<real>0.0</real>
<key>finishColorAlpha</key>
<real>1</real>
<key>finishColorBlue</key>
<real>1</real>
<key>finishColorGreen</key>
<real>1</real>
<key>finishColorRed</key>
<real>1</real>
<key>finishColorVarianceAlpha</key>
<real>0.0</real>
<key>finishColorVarianceBlue</key>
<real>0.0</real>
<key>finishColorVarianceGreen</key>
<real>0.0</real>
<key>finishColorVarianceRed</key>
<real>0.0</real>
<key>finishParticleSize</key>
<real>-1</real>
<key>finishParticleSizeVariance</key>
<real>0.0</real>
<key>gravityx</key>
<real>0.0</real>
<key>gravityy</key>
<real>-10</real>
<key>maxParticles</key>
<real>700</real>
<key>maxRadius</key>
<real>0.0</real>
<key>maxRadiusVariance</key>
<real>0.0</real>
<key>minRadius</key>
<real>0.0</real>
<key>minRadiusVariance</key>
<real>0.0</real>
<key>particleLifespan</key>
<real>3</real>
<key>particleLifespanVariance</key>
<real>1</real>
<key>radialAccelVariance</key>
<real>0.0</real>
<key>radialAcceleration</key>
<real>1</real>
<key>rotatePerSecond</key>
<real>0.0</real>
<key>rotatePerSecondVariance</key>
<real>0.0</real>
<key>rotationEnd</key>
<real>0.0</real>
<key>rotationEndVariance</key>
<real>0.0</real>
<key>rotationStart</key>
<real>0.0</real>
<key>rotationStartVariance</key>
<real>0.0</real>
<key>sourcePositionVariancex</key>
<real>1200</real>
<key>sourcePositionVariancey</key>
<real>0.0</real>
<key>speed</key>
<real>130</real>
<key>speedVariance</key>
<real>30</real>
<key>startColorAlpha</key>
<real>1</real>
<key>startColorBlue</key>
<real>1</real>
<key>startColorGreen</key>
<real>1</real>
<key>startColorRed</key>
<real>1</real>
<key>startColorVarianceAlpha</key>
<real>0.0</real>
<key>startColorVarianceBlue</key>
<real>0.0</real>
<key>startColorVarianceGreen</key>
<real>0.0</real>
<key>startColorVarianceRed</key>
<real>0.0</real>
<key>startParticleSize</key>
<real>10</real>
<key>startParticleSizeVariance</key>
<real>5</real>
<key>tangentialAccelVariance</key>
<real>0.0</real>
<key>tangentialAcceleration</key>
<real>1</real>
<key>textureFileName</key>
<string>snow.png</string>
</dict>
</plist>
在上述的plist文件描述的屬性和屬性值都是成對出現,其中<key>標籤描述的是屬性,<real>描述的屬性值。
plist文件中textureFileName屬性指定了紋理圖片,紋理圖片寬高必須是2的n次冪,大小不要超過64x64像素,在美工設計紋理圖片時候,不用關注太多細節,例如:設計雪花紋理圖片時候,按照雪花是有6個角的,不少人會設計爲下圖所示的樣式,而事實上咱們須要的下圖所示的漸變效果的圓點。
雪花圖片
雪花粒子紋理圖片
提示 描述粒子屬性的plist文件,能夠經過粒子系統設計工具生成,有關粒子系統工具使用你們能夠參考本系列叢書的工具卷(《Cocos2d-JS實戰(卷Ⅳ):工具詳解》)。
下面咱們經過實現以下圖所示的下雪粒子系統,介紹一下自定義粒子系統的實現。
下雪粒子系統實例
圖中所示的下雪實例,使用plist文件建立,主要代碼以下:
[html] view plaincopy
var HelloWorldLayer = cc.Layer.extend({
ctor: function () {
//////////////////////////////
// 1. super init first
this._super();
var size = cc.director.getWinSize();
var bg = new cc.Sprite("res/background-1.png");
bg.x = size.width / 2;
bg.y = size.height / 2;
this.addChild(bg);
var particleSystem = new cc.ParticleSystem("res/snow.plist");
particleSystem.x = size.width / 2;
particleSystem.y = size.height - 50;
this.addChild(particleSystem);
return true;
}
});
從代碼可見plist文件建立粒子系統要比代碼建立簡單不少,這主要是由於採用了plist描述粒子屬性。
更多內容請關注最新Cocos圖書《Cocos2d-x實戰:JS卷——Cocos2d-JS開發》
本書交流討論網站:http://www.cocoagame.net
歡迎加入Cocos2d-x技術討論羣:257760386
更多精彩視頻課程請關注智捷課堂Cocos課程:http://v.51work6.com
智捷課堂現推出Cocos會員,敬請關注:http://v.51work6.com/courseInfoRedirect.do?action=netDetialInfo&courseId=844465&categoryId=0
《Cocos2d-x實戰 JS卷》現已上線,各大商店均已開售:
京東:http://item.jd.com/11659698.html
歡迎關注智捷iOS課堂微信公共平臺,瞭解最新技術文章、圖書、教程信息