Cocos Creator学习三:生命周期回调函数
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学习三:生命周期回调函数的更多相关文章
- 如何解决微信小程序界面适配问题-引用-生命周期回调函数-优化机制-样式引入
如何解决微信小程序界面适配问题 .wxss page{ height: 100%; width:750rpx; } this.setData({ imageWidth: wx.getSystemInf ...
- vue学习三:生命周期钩子
生命周期钩子介绍: 每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听.编译模板.将实例挂载到 DOM 并在数据变化时更新 DOM 等.同时在这个过程中也会运行一些叫做生 ...
- Cocos Creator学习一:学习目录以及v2.0 必须关注的网址
学习目录: <Cocos Creator学习二:查找节点和查找组件> <Cocos Creator学习三:生命周期回调函数> <Cocos Creator学习四:按钮响应 ...
- pomelo生命周期回调和组件加入
一 生命周期回调 生命周期回调可以让开发人员在不同类型的server生命周期中进行详细操作. 提供的生命周期回调函数包含:beforeStartup,afterStartup,beforeShutdo ...
- Cocos Creator 生命周期回调(官方文档摘录)
Cocos Creator 为组件脚本提供了生命周期的回调函数.用户通过定义特定的函数回调在特定的时期编写相关 脚本.目前提供给用户的声明周期回调函数有: onLoad start update la ...
- Cocos Creator学习四:按钮响应事件
1.方法一:通过编辑器对cc.Button的属性进行拖放操作进行控制 (1)创建脚本BtnClick1.js,增加btnClick1函数,然后拖放到Canvas节点中(记得拖放,否则下面步骤将找不到对 ...
- Cocos Creator学习六:加载/释放图片资源
1.目的:学习加载图片资源.使用图片资源创建对象以及释放图片资源. 2.注意事项以及主要函数: ①注意事项:使用loadRes函数,资源必须放置在assets下的resources文件夹下(默认没有r ...
- Cocos Creator学习五:触摸和重力传感响应事件
1.移动设备上主要涉及触摸响应事件以及重力传感响应事件的处理. 事件主要分两类: 针对节点事件处理的节点响应事件cc.Node.EventType(主要是触摸响应事件和鼠标响应事件): 针对全局系统事 ...
- vue-cli脚手架 ,过滤器,生命周期钩子函数
一.安装vue-cli脚手架 1.淘宝镜像下载 用淘宝的国内服务器来向国外的服务器请求,我们向淘宝请求,而不是由我们直接向国外的服务器请求,会大大提升请求速度,使用时,将所有的npm命令换成cnpm即 ...
随机推荐
- jq点击事件未生效
jq点击事件未生效,应写成事件委托的方式 // $(function(){ // $('.current a').on("click", function(){ // $(this ...
- 配置成功java11后安装eclipse失败
前提是 1.java是成功配置的, 2.看清楚32bit,还是64bit,需要一致 THEN 方法一:去安装java11之前的版本,正确配置环境 方法二:java11中没有jre(不打紧).所以需要直 ...
- python-爬虫(3)---lxml匹配css
百度首页 部分代码 <div class="s_tab_inner"> <b>网页</b> <a href="//www.ba ...
- Hadoop多租户架构配置
cloudera manager 进到cluster里面,点击Dynamic Resource Pools,没做任何配置默认情况下,资源池里有个default资源组 hadoop jar /usr/l ...
- UGUI-Text——自适应
Text组件上勾选Best Fit,当内容变多时,按原来大小装不下时,会总体缩放显示
- Java面向对象概述和三大特性
Java 是面向对象的高级编程语言,类和对象是 Java 程序的构成核心.围绕着 Java 类和 Java 对象,有三大基本特性:封装是 Java 类的编写规范.继承是类与类之间联系的一种形式.而多态 ...
- java中存储mysql数据库时间类型
Mysql 与 java 的时间类型 MySql的时间类型有 Java中与之对应的时间类型 date java.sql.Date Datetime ...
- oracle 事务 与 提交
Oracle事务 一般事务(DML)即数据修改(增.删.改)的事务事务会将所有在事务中被修改的数据行加上锁(行级锁),来阻止其它人(会话)同时对这些数据的修改操作.当事务被提交或回滚后,这些数据才会被 ...
- centos6删除mysql安装
1.查看已经安装了的mysql包: 2.卸载mysql: 3.查看剩下的mysql安装包: 4.逐个删除剩下的mysql安装包: 5.删除完后再次查看,以确保已删除干净: 6.删除自己安装的mysql ...
- Spring 极速集成注解 redis 实践
Redis 做为基于内存的 Key-Value 数据库,用来做缓存服务器性价比相当高. 官方推出的面向 Java 的 Client Jedis,提供了很多接口和方法,可以让 Java 操作使用 Red ...