本節主要通過對數組的使用,實現了節點的添加和刪除,因爲是在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