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学习目录

相关文章
相关标签/搜索