CVP認證學習筆記--李天宇026對數組的使用

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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章