1.目的:学习生命周期回调函数以及回调顺序,更有利于我们逻辑的处理把控。

2.生命周期回调函数:

节点:指cc.Node;组件:指cc.Component。

①onLoad:脚本组件绑定的节点所在场景加载时系统回调一次(或者节点active从false变为true时系统回调一次)。可在这里获取场景中其它节点,并可以初始化一些不常改变的属性。

②start:只在第一次update前系统回调一次。这里可以初始化一些经常改变的属性。

③update(dt):每一帧渲染前系统回调,主要用于处理逻辑。dt为上一帧到当前帧时间ms间隔。

④lateUpdate(dt):每一帧渲染后系统回调,用于处理逻辑。dt为上一帧到当前帧时间ms间隔。

⑤onDestroy:组件或者节点调用了destroy()函数,在帧结束时系统回调。或者场景切换或销毁时系统回调。主要用于资源回收。

⑥onEnable:组件的enabled从false变为true是系统回调一次;节点active从false变为true时系统回调一次。

⑦onDisable:和onEnable相反。

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

Cocos Creator学习三:生命周期回调函数的更多相关文章

  1. 如何解决微信小程序界面适配问题-引用-生命周期回调函数-优化机制-样式引入

    如何解决微信小程序界面适配问题 .wxss page{ height: 100%; width:750rpx; } this.setData({ imageWidth: wx.getSystemInf ...

  2. vue学习三:生命周期钩子

    生命周期钩子介绍: 每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听.编译模板.将实例挂载到 DOM 并在数据变化时更新 DOM 等.同时在这个过程中也会运行一些叫做生 ...

  3. Cocos Creator学习一:学习目录以及v2.0 必须关注的网址

    学习目录: <Cocos Creator学习二:查找节点和查找组件> <Cocos Creator学习三:生命周期回调函数> <Cocos Creator学习四:按钮响应 ...

  4. pomelo生命周期回调和组件加入

    一 生命周期回调 生命周期回调可以让开发人员在不同类型的server生命周期中进行详细操作. 提供的生命周期回调函数包含:beforeStartup,afterStartup,beforeShutdo ...

  5. Cocos Creator 生命周期回调(官方文档摘录)

    Cocos Creator 为组件脚本提供了生命周期的回调函数.用户通过定义特定的函数回调在特定的时期编写相关 脚本.目前提供给用户的声明周期回调函数有: onLoad start update la ...

  6. Cocos Creator学习四:按钮响应事件

    1.方法一:通过编辑器对cc.Button的属性进行拖放操作进行控制 (1)创建脚本BtnClick1.js,增加btnClick1函数,然后拖放到Canvas节点中(记得拖放,否则下面步骤将找不到对 ...

  7. Cocos Creator学习六:加载/释放图片资源

    1.目的:学习加载图片资源.使用图片资源创建对象以及释放图片资源. 2.注意事项以及主要函数: ①注意事项:使用loadRes函数,资源必须放置在assets下的resources文件夹下(默认没有r ...

  8. Cocos Creator学习五:触摸和重力传感响应事件

    1.移动设备上主要涉及触摸响应事件以及重力传感响应事件的处理. 事件主要分两类: 针对节点事件处理的节点响应事件cc.Node.EventType(主要是触摸响应事件和鼠标响应事件): 针对全局系统事 ...

  9. vue-cli脚手架 ,过滤器,生命周期钩子函数

    一.安装vue-cli脚手架 1.淘宝镜像下载 用淘宝的国内服务器来向国外的服务器请求,我们向淘宝请求,而不是由我们直接向国外的服务器请求,会大大提升请求速度,使用时,将所有的npm命令换成cnpm即 ...

随机推荐

  1. 接口自动化框架(java)--3.get,delete请求,Excel管理多种请求类型

    这套框架的报告是自己封装的 每种请求类型放入不同的sheet中,就可以避免新建太多的excel去做数据驱动. XSSFSheet类提供了一个读取sheet的方法,getSheetAt(int),通过下 ...

  2. java 对象的一点小问题

    List<A> list = new ArrayList(); A a = new A(); for(int i=0;i<3;i++) { a.setI(i); list.add(A ...

  3. PeopleSoft 单点登录

    第一次会以guest 用户进来,code 为空 第二次也以guest 进来code 从ssoAP获取到code,根据code 获取token,根据token 获取用户id.

  4. python数据类型之字典类型

    # 字典常用方法clear(), get(), pop(), update(),copy(),items(), popitem(),values(), fromkeys(), keys(),setde ...

  5. ros kinetic安装rbx1

    1.首先安装一些依赖包 sudo apt-get install ros-kinetic-turtlebot-bringup \ ros-kinetic-turtlebot-create ros-ki ...

  6. 常用MSSQL语句

    现在很少用SQL 写东西,但有时真用起来半天想不起来,看来还是有必要记录一下... 新建表: create table [表名] ( [自动编号字段] int IDENTITY (1,1) PRIMA ...

  7. PHP 不同类型之间的松散和严格比较

    原始数据类型 在比较之前先简单介绍一下PHP的9种原始数据类型,包括 四种标量类型: boolean(布尔型) integer(整型) float(浮点型,也称作 double) string(字符串 ...

  8. centos7将网卡名字改成eth样式

    ll /etc/sysconfig/grub lrwxrwxrwx 1 root root 17 Jun 12 2016 /etc/sysconfig/grub -> /etc/default/ ...

  9. IDEA 热部署设置(JRebel插件激活)

    参考原文链接:https://blog.csdn.net/feidi7783/article/details/80607374

  10. 996.icu,不加班的程序员有前途吗?

    一.有没有不加班的程序员? 有,我就是. 我目前工作与一家500强外企(欧美),职称为高级软件开发专家. 我在这家公司(500强外企)已经服务了10年,所有加班次数合起来不超过10天,最近3年则一次都 ...