本节主要通过对数组的使用,实现了节点的添加和删除,因为是在javascript的语法基础上进行了升华,所以不是很难。下面是本节的内容:
首先先创建一个数组用来存放相关节点。往数组的末尾添加元素用的是push方法。在最前边添加元素用的是unshift方法,这个方法会返回一个新长度。删除最后边的元素用的是pop方法。删除指定位置后的几个元素用的是splice(x,y);第一个参数代表下标,第二个元素代表的是后边的几个元素。具体代码如下:
var allnpc = new Array();
var count = 0;
var HelloWorldLayer = cc.Layer.extend({
sprite:null,
ctor:function () {
this._super();
var size = cc.winSize;
var item1=new cc.MenuItemFont("添加元素1",this.callback,this);
var item2=new cc.MenuItemFont("添加元素2",this.callback,this);
var item3=new cc.MenuItemFont("删除元素",this.callback,this);
var item4=new cc.MenuItemFont("删除元素2",this.callback,this);
var item5=new cc.MenuItemFont("删除元素3",this.callback,this);
var menu = new cc.Menu(item1,item2,item3,item4,item5);
this.addChild(menu,100);
var show = new cc.LabelTTF("共有0个元素","黑体",30);
this.addChild(show,0);
show.setTag(100);
show.setPosition(size.width/2,size.height/2);
//本节作业:
//本章介绍了数组的使用
//通过数组可以动态管理一组对象
//作业要求
//将这5个按钮对应于添加一个Node后将node显示
//这是第N个节点
//当删除某个Node后,将这个Node从屏幕移除
item1.y=200;
item2.y=160;
item3.y=120;
item4.y=80;
item5.y=40;
item1.setTag(11);
item2.setTag(12);
item3.setTag(13);
item4.setTag(14);
item5.setTag(15);
return true;
},
callback: function (obj) {
var newobj = new cc.Sprite(res.logo_png);
newobj.tag = allnpc.length+1;
switch(obj.getTag()){
case 11:
//最后添加
allnpc.push(newobj);
newobj.setPosition(Math.random()*800,Math.random()*450);
this.addChild(newobj,0);
this.getChildByTag(100).setString("共有"+newobj.tag+"个元素");
break;
case 12:
//unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。
// count++;
allnpc.unshift(newobj);
newobj.setPosition(Math.random()*800,Math.random()*450);
this.addChild(newobj,0);
this.getChildByTag(100).setString("共有"+newobj.tag+"个元素");
break;
case 13:
if(allnpc.length>0){
//count--;
var pop=allnpc.pop();
this.removeChild(pop);
this.getChildByTag(100).setString("共有"+ allnpc.length+"个元素");
break;
}
case 14:
var splice=allnpc.splice(1,2);
if(allnpc.length>0){
//count--;
for (var i=0;i<splice.length;i++) {
this.removeChild(splice[i]);
}
this.getChildByTag(100).setString("共有"+allnpc.length+"个元素");
break;
}
case 15:
Array.prototype.delete = function(index){
return this.splice(index-1,1);
}
var custom1=allnpc.delete(1);
if(allnpc.length>0){
//count--;
for (var i=0;i<custom1.length;i++) {
this.removeChild(custom1[i]);
}
this.getChildByTag(100).setString("共有"+allnpc.length+"个元素");
break;
}
}
}
});
var HelloWorldScene = cc.Scene.extend({
onEnter:function () {
this._super();
var layer = new HelloWorldLayer();
this.addChild(layer);
}
});
作业传送门:
http://www.cocoscvp.com/index.php?m=Admin&c=mylesson&a=code&project=8&stepid=28&num=1&cid=5