本章节学习到了如何使用粒子系统,但是在开发的项目中,我们不会经常使用到,大多时候回将粒子转成帧动画进行播放,降低IO消耗,从而节约开发的成本。直接呈上代码:
var HelloWorldLayer = cc.Layer.extend({
sprite:null,
ctor:function () {
this._super();
var size = cc.winSize;
var particle = ["爆炸粒子","火焰粒子","烟花粒子",
"花粒子","星系粒子","流星粒子",
"漩涡粒子","雪粒子","烟粒子",
"太阳粒子","雨粒子"];
var items = [];
for(var i=0;i<particle.length;i++){
var item = new cc.MenuItemFont(particle[i],this.callback,this);
item.setTag(i*10);
item.setPosition(size.width/2-100,size.height/2-30*i);
items.push(item);
}
var menu = new cc.Menu(items);
menu.setPosition(0,size.height/2-70);
this.addChild(menu);
return true;
},
callback: function (obj) {
var particle;
var size = cc.winSize;
switch(obj.tag){
case 0:
this.removeChildByTag(100);
particle = new cc.ParticleExplosion();
particle.setTag(100);
particle.texture=cc.textureCache.addImage("res/ballfire.plist.png");
this.addChild(particle);
particle.setPosition(size.width/2+100,size.height/2);
break;
case 10:
this.removeChildByTag(100);
particle = new cc.ParticleFire();
particle.setTag(100);
particle.texture=cc.textureCache.addImage("res/ballfire.plist.png");
this.addChild(particle);
particle.setPosition(size.width/2+100,size.height/2);
break;
case 20:
this.removeChildByTag(100);
particle = new cc.ParticleFireworks();
particle.setTag(100);
particle.texture=cc.textureCache.addImage("res/ballfire.plist.png");
this.addChild(particle);
particle.setPosition(size.width/2+100,size.height/2);
break;
case 30:
this.removeChildByTag(100);
particle = new cc.ParticleFlower();
particle.setTag(100);
particle.texture=cc.textureCache.addImage("res/ballfire.plist.png");
this.addChild(particle);
particle.setPosition(size.width/2+100,size.height/2);
break;
case 40:
this.removeChildByTag(100);
particle = new cc.ParticleGalaxy();
particle.setTag(100);
particle.texture=cc.textureCache.addImage("res/ballfire.plist.png");
this.addChild(particle);
particle.setPosition(size.width/2+100,size.height/2);
break;
case 50:
this.removeChildByTag(100);
particle = new cc.ParticleMeteor();
particle.setTag(100);
particle.texture=cc.textureCache.addImage("res/ballfire.plist.png");
this.addChild(particle);
particle.setPosition(size.width/2+100,size.height/2);
break;
case 60:
this.removeChildByTag(100);
particle = new cc.ParticleSpiral();
particle.setTag(100);
particle.texture=cc.textureCache.addImage("res/ballfire.plist.png");
this.addChild(particle);
particle.setPosition(size.width/2+100,size.height/2);
break;
case 70:
this.removeChildByTag(100);
particle = new cc.ParticleSnow();
particle.setTag(100);
particle.texture=cc.textureCache.addImage("res/ballfire.plist.png");
this.addChild(particle);
particle.setPosition(size.width/2+100,size.height/2);
break;
case 80:
this.removeChildByTag(100);
particle = new cc.ParticleSmoke();
particle.setTag(100);
particle.texture=cc.textureCache.addImage("res/ballfire.plist.png");
this.addChild(particle);
particle.setPosition(size.width/2+100,size.height/2);
break;
case 90:
this.removeChildByTag(100);
particle = new cc.ParticleSun();
particle.setTag(100);
particle.texture=cc.textureCache.addImage("res/ballfire.plist.png");
this.addChild(particle);
particle.setPosition(size.width/2+100,size.height/2);
break;
case 100:
this.removeChildByTag(100);
particle = new cc.ParticleRain();
particle.setTag(100);
particle.texture=cc.textureCache.addImage("res/ballfire.plist.png");
this.addChild(particle);
particle.setPosition(size.width/2+100,size.height/2);
break;
}
}
});
var HelloWorldScene = cc.Scene.extend({
onEnter:function () {
this._super();
var layer = new HelloWorldLayer();
this.addChild(layer);
}
});
上述是cocos2d自带的粒子系统,还可以自定义粒子系统,如:
//添加自定义粒子
cc.textureCache.addImage("res/ballfire.plist.png");
var myp=new cc.ParticleSystem("res/ballfire.plist");
this.addChild(myp);
myp.setPosition(cc.winSize.width/2,cc.winSize.height/2);
最后附上作业链接:
http://www.cocoscvp.com/usercode/2016_05_08/c4622e38f30a278640911f24977bc4e0735349ed/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。