cc.Component

組建入口函數

1.onLoad:組建加載的時候調用,保證了你可以獲取到場景中的其他節點,

以及節點關了的資源數據,

這時候場景全部初始化完畢了,不用擔心場景節點沒出來.


2.start:也就是第一次執行update之前觸發,在onLoad之後。


3.update(dt):組建每次刷新的時候調用,dt是距離上一次的刷新的時間

(會在所有動畫更新前執行)


4.lateUpdate(dt):刷新完後調用,(在所有動畫更新後執行)


5.onEnable:啓用這個組件的時候調用 在start之前onLoad之後調用


6.onDisable:禁用這個組建的時候調用


7.onDestroy:組建實例銷燬的時候調用









cc.Component屬性


1.組件類:是所有組件的基類;


2.this;指的是當前這個組建的實例


3.node:指向這個組件實例所掛載的這個節點(cc.Node);

就是說如果你要找這個節點,就要通過組建實例指.所掛載的節點.

就是:   this.node


4.name這個組件實例所掛載的節點的名字;

this.name輸出的是: 組建實例所掛載節點名<組建名>

this.node.name   組建實例所掛載節點名稱



5.屬性列表,如果寫在這裏面就能在編輯器裏綁定這些數據



基本數據類型

properties:{

     基本數據類型:數,bool,字符串,color,pos,size

    speed:1,整數

    is_debug:false,bool

    url:"baidu.com",字符串

    color:cc.color(100,20,20,255),顏色

     pos:cc.p(0,0),位置座標

    size:cc.size(100,100),大小

}   

效果圖

UXKL8OG)@T39QZUZK3@IOKY.png



比如你要一個精靈組建,可以使用系統組建:cc.Sprite cc.Button


還可以放組建:{

 type:組建類型,系統類型,也可以require自己編寫的組建類型

    default:null or []

    null就是隻有一個,而數組是有多個


}



    sprite_item:{
    type: cc.Sprite,//類型 你要綁哪個組建
    default: null, //默認值 可以是null或者空數組
    },


關聯組件的時候,一旦節點上有這個組件,他是把這個節點

組件實例給他。 也就是把組建實例給這個sprite_item


這時候我們可個這個組建實例,比如讓他所指向的節點進行旋轉

    var rt = cc.rotateTo(3,180);
    this.sprite_item.node.runAction(rt)

如果是自己的代碼組建,獲取方法.

var my_item = require("my_item")

    custo: {
    type: my_item,
    default: null,
    }






組建 添加、查找、刪除


1.在當前節點添加一個組件,可以是系統組建,cc.Sprite,cc.Label

也可以是代碼組建的名字.反回值是掛上的組建實例

一個節點可以掛載多個組件

var com_inst = this.addComponent("my_item")

組建實例掛載的節點node也可以添加組建

var com_inst = this.node.addComponent("my_item")



2.查找一個組件


    com_inst = this.getComponent("my_item"); //反回第一個找到的組件
    console.log(com_inst);

如果這個節點掛有多個組件 後面多一個s

    var arr = this.getComponents("my_item");//返回組件列表
    console.log(arr );


在自己和子節點裏去查找這個組建實例 反回找到第一個

getComponentInChildren

在自己和子節點裏去查找這個組建實例 反回第一個

getComponentsInChildren



3刪除組件 刪除當前組建實例

觸發onDisable 和 onDestroy

destroy()






Shedule定時器操作

1.scheduleOnce(函數,time):time秒後啓動一次定時器

 

  //啓動一次定時器 只觸發一次
    this.scheduleOnce(function(){
    console.log("sheduleOnce");
    }.bind(this),3);


2.schedule(函數,多長時間執行一次,次數+1,多長時間後開始執行);

比如說我要2秒後開始執行定時器,每隔3秒執行一次,共執行7次

執行的次數他會自動加1 因爲你填0 他默認就是+1。

    this.schedule(function(){
    console.log("schedule");
    }.bind(this),3,6,2);

如果要執行無數次,參數次數可以填寫成 cc.macro.REPEAT_FOREVER


如果要馬上開始,並且2秒一次可以這樣,他默認是無限次執行

this.schedule(回調函數,幾秒執行一次)

this.schedule(回調函數,幾秒執行一次)



3.unschedule(函數)取消這個定時器操作

使用這個的時候,要求你的回調函數必須被保存

    var cfunc = function(){
    console.log("schedule");
    }.bind(this);
    this.schedule(cfunc,2,cc.macro.REPEAT_FOREVER,2);  
    //8秒後停止這個定時器
    this.scheduleOnce(function(){
    console.log("停止定時器");
    this.unschedule(cfunc);
    }.bind(this),8);




4.unscheduleAllcallbacks() 取消所有的定時器操作



5.注意,如果節點或組建沒有激活是不會調用的.

也就是說你被隱藏的他都不會執行.








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