1. 程式人生 > >Cocos Creator 系統學習筆記(七)cc.Component的使用詳解

Cocos Creator 系統學習筆記(七)cc.Component的使用詳解

  1 //獲取型別
  2 var my_item=require("Component");//AA:其他類名 1
  3 cc.Class({
  4     //cc.Class 返回了一個建構函式,然後繼承了cc.Component
  5     //cc.Component ,也叫周期函式,也叫元件(固定的入口函式)入口函式
  6     extends: cc.Component,
  7 
  8     properties: {
  9       //基本資料型別 數 bool 字串 color pos size
 10       speed:110,
 11       is_debug:false
, 12 url:"", 13 color:cc.color(0,0,0,255), 14 pos:cc.v2(0,1), 15 pos2:cc.p(0,0), 16 size:cc.p(100,100), 17 //系統元件 18 spriteItem:{ 19 type:cc.Sprite, 20 default:null,// 若為單個sprite則為null,否則為陣列[] 21 }, 22 spriteItemList:{ 23 type:cc.Sprite,
24 default:[], 25 }, 26 //定義自己的元件 1 27 //使用者元件 28 custom_com:{ 29 type:my_item, 30 default:null, 31 }, 32 }, 33 /**元件入口函式 34 * 1: onLoad: 元件載入的時候呼叫, 保證了你可以獲取到場景中的其他節點,以及節點關聯的資源資料 35 2: start: 也就是第一次執行 update 之前觸發 36 3: update(dt):元件每次重新整理的時候呼叫,dt距離上一次重新整理的時間(會在所有畫面更新前執行)
37 4: lateUpdate(dt) 重新整理完後呼叫(會在所有畫面更新後執行); 38 5: onEnable: 啟用這個元件的時候呼叫; 39 6: onDisable: 禁用這個元件的時候呼叫; 40 7: onDestroy: 元件例項銷燬的時候呼叫; * 41 */ 42 // start () { }, 43 //update (dt) {}, 44 //lateUpdate(dt){}, 45 // onEnable(){}, 46 // onDestroy(){}, 47 /**cc.Component 48 * 1: 元件類: 所有元件的基類; 49 2: node: 指向這個元件例項所掛載的這個節點(cc.Node); 50 3: name: 這個元件例項所掛載的節點的名字<元件的名字>; 51 4: properties: { 52 } 屬性列表; 53 (1) name: value, 數,bool, 字串; 54 (2) 位置,顏色, 大小: cc.p(0, 0), cc.color(0, 0), cc.size(100, 100) 55 (3) 元件: { 56 type: 元件型別, 系統型別,也可以require自己編寫的元件型別 57 default: null or [] 58 } 59 (4)其他: 安裝目錄內engine,開啟cocos creator原始碼,找到參考,然後移動到你的程式碼裡面; 60 //注:在和服務端互動的返回函式內,儘量不要使用 this等,this在返回函式內代表的應該是返回資訊resp 61 */ 62 onLoad0:function () { 63 //const self=this; 64 cc.log(this.node); 65 cc.log(this.name);//元件例項所掛載的節點的名稱<元件名稱> 66 cc.log(this.node.name);//當前節點名字; 67 }, 68 /**元件新增 查詢 刪除 69 * 1: addComponent(元件的型別): 向節點上新增一個元件例項, 返回新增好的元件例項;利用this/ this.node 70 2: getComponent(元件型別): 查詢一個為指定型別的元件例項(如果有多個,第一個匹配); 71 3: getComponents(元件型別): 查詢這個節點上所有這個型別的元件例項; 72 [inst1, inst2, inst3, ...] 73 4: getComponentInChildren(元件型別): 在自己與孩子節點裡面查詢; 74 5: getComponentsInChildren (元件型別): 在自己與孩子節點裡面查詢; 75 6: destroy(): 從節點中刪除這個元件的例項; 76 */ 77 start0:function(){ 78 var com_=this.addComponent("my_item");//返回掛載的節點例項 79 var com_1=this.node.addComponent("my_item"); 80 //get 81 //返回找到組建的第一個 82 com_1=this.getComponent("my_item"); 83 //返回的是元件陣列(例項1 例項2 ...) 84 var com_list=this.getComponent("my_item"); 85 //刪除元件,刪除當前元件例項,觸發onDiaable,onDestroy的呼叫 86 this.destroy(); 87 }, 88 /**Shedule定時器操作 89 * 1:sheduleOnce(函式, time): time秒後啟動一次定時器; 90 2: schedule(函式, time, 次數, 多長時間後開始); 執行的次數為(次數 + 1), cc.macro.REPEAT_FOREVER 91 3: unschedule(函式); // 取消這個定時器操作; 92 5: unscheduleAllCallbacks 取消所有的定時器操作; 93 注意,如果節點或元件沒有啟用是不會呼叫的; 94 節點或元件,必須是啟用狀態 95 */ 96 onLoad:function(){ 97 this.scheduleOnce(function(){ 98 console.log("3s後呼叫"); 99 }.bind(this),3); 100 this.schedule(function(){ 101 console.log("called"); 102 }.bind(this),1,4,2);//2s後呼叫,每隔1s再次呼叫,共呼叫4+1次; 103 //一直執行 104 this.schedule(function(){ 105 console.log("called"); 106 //this.unscheduleAllCallbacks(); 107 }.bind(this),1,cc.macro.REPEAT_FOREVER ,2); 108 //只取消一個定時器 109 var call=function(){ 110 console.log("aaaa"); 111 }.bind(this); 112 //預設立刻執行,一直迴圈 113 this.schedule(call,0.5); 114 115 this.scheduleOnce(function(){ 116 this.unschedule(call);//取消call定時器 117 }.bind(this),5); 118 119 }, 120 });