組建入口函數
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),大小
}
效果圖
比如你要一個精靈組建,可以使用系統組建: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.注意,如果節點或組建沒有激活是不會調用的.
也就是說你被隱藏的他都不會執行.