Cocos Creator學習三:生命週期回調函數

1.目的:學習生命週期回調函數以及回調順序,更有利於咱們邏輯的處理把控。html

 

2.生命週期回調函數:函數

節點:指cc.Node;組件:指cc.Component。post

①onLoad:腳本組件綁定的節點所在場景加載時系統回調一次(或者節點active從false變爲true時系統回調一次)。可在這裏獲取場景中其它節點,並能夠初始化一些不常改變的屬性。學習

②start:只在第一次update前系統回調一次。這裏能夠初始化一些常常改變的屬性。測試

③update(dt):每一幀渲染前系統回調,主要用於處理邏輯。dt爲上一幀到當前幀時間ms間隔。url

④lateUpdate(dt):每一幀渲染後系統回調,用於處理邏輯。dt爲上一幀到當前幀時間ms間隔。spa

⑤onDestroy:組件或者節點調用了destroy()函數,在幀結束時系統回調。或者場景切換或銷燬時系統回調。主要用於資源回收。3d

⑥onEnable:組件的enabled從false變爲true是系統回調一次;節點active從false變爲true時系統回調一次。code

⑦onDisable:和onEnable相反。cdn

 

3.單個腳本的回調順序

建立一個腳本script1.js add到Canvas節點上,能夠看到對應的順序以下:

 

4.多個腳本的回調順序

再建立一個script2.js,也add到Canvas節點上,script1組件之下,能夠看到對應的順序以下:

①全部節點onLoad->全部節點onEnable->全部節點start->全部節點update->全部節點lateUpdate

②調用的順序和腳本的順序有關係,好比咱們將script2.js 移動到 script1.js之上,則能夠看到script2的回調函數比script1的回調函數先執行。

 

5.建立一個EnableNode節點測試組件的enabled屬性

①建立一個測試節點EnableNode,增長腳本組件EnableTest,並將腳本組件默認enabled=false

控制代碼

       let enableNode = cc.find("Canvas/EnableNode");  //獲取EnableNode節點
        let enableTest = enableNode.getComponent("EnableTest"); //獲取節點中的組件
        enableTest.enabled = !enableTest.enabled; //設置組件的enabled

②啓動的時候,咱們能夠看到onLoad

③首次設置enabled=true,能夠看到按順序調用了onEnable->start->update->lateUpdate

④設置enabled=false,能夠看到onDisable

⑤再次設置enabled=true,能夠看到onEnable->update->lateUpdate(沒有了start,因此說明start僅僅只會在組件enabled爲true時的首次update前調用一次!)

 

6.建立一個ActiveNode節點測試節點的active屬性

①建立一個測試節點ActiveNode,設置節點的active屬性爲false,增長腳本組件ActiveTest

 

控制代碼

        let activeNode = cc.find("Canvas/ActiveNode");  //獲取EnableNode節點
        activeNode.active = !activeNode.active; //active

②首次設置active=true,能夠看到按順序調用了onLoad->onEnable->start->update->lateUpdate

③設置active=false,能夠看到onDisable

④再次設置active=false,能夠看到和上面組建的效果一致,沒有了star

 

7.由5和6可見,節點的active控制全部組件的enabled。

也就是說active=true,則會調用全部組件的onEnable;

active=false,則會調用全部組件的onDisable;

 

PS:

1.測試環境v2.0.5+win10

2.測試代碼下載地址:https://files-cdn.cnblogs.com/files/chevin/CocosCreatorBlog03.zip

3.cocos2dx中的onEnter/onExit在這裏不存在的。

以上。

 

Cocos Creator學習目錄

相關文章
相關標籤/搜索