cocosCreator入门(四) 节点生命周期
参考:https://docs.cocos.com/creator/manual/zh/scripting/
配置: MacOS 10.12.6 CocosCreator2.3.3 JavaScript VisualCode
JavaScript
一种弱类型语言,标识符由数字,字母和下划线组成。声明变量的时候一般使用:var,若未使用则被认为是全局变量。
内置的数据类型有:
Number, String, Boolean, Null, Undefined, Object /* 注意: null: 表示不存在,类似于lua下的nil, Python下的None, C++下的NULL undefined: 表示未定义的 在javaScript中null用于判定对象是否存在,undefined用于判定函数参数是否传递 */
生命周期
组件脚本的样式如下:
cc.Class({ extends: cc.Component, // 用于实现继承 // 属性声明 properties: { textLabel: { default: null, // 设置默认的属性值,第一次添加到节点时使用 type: cc.Node, // 属性的数据类型,在default为null时,会通过type来检测类型 visible: true, // 属性检查器中是否显示该属性,默认为true serializable: false, // 设为false,表示不序列保存该属性 displayName: 'Name', // 属性检查器中显示的名字 tooltip: '', // 属性检查器中面板显示的属性介绍提示 }, }, /* 生命周期: onLoad -> onEnable -> start -> update -> lateupdate -> onDisable -> onDestroy 1. 关于onLoad和start: onLoad主要用于组件的初始化,比如A,B两个组件,初始化流程为: A onLoad B onLoad A start B start 而对于组件的初始化,默认是按照层级管理器的顺序由上往下依次初始化,若想脚本动态修改,可添加属性: editor: { executionOrder: -1, // 数值越小,越优先执行, 该属性值默认情况下为0 }, 2. 在销毁节点的时候,同样存在:removeFromParent, 它与destroy的区别: removeFromParent调用后,可能因为逻辑的原因该对象依然被使用,如此可能导致内存泄露; destroy调用后,会去默认执行存在的onDestroy,并且引擎会在当前帧结束后统一处理,这样会减少内存泄露的风险 */ // 组件首次激活的时候调用,在该阶段你可以获取到场景中的其他节点,原因是,节点被加入的时候就被初始化了。 onLoad: function() {}, // 组件的active由false变为true时,调用 onEnable: function() {}, // 组件激活后,在update之前调用。常用于初始化一些经常修改的数据,这些数据在update时改变 start: function() {}, // 每一帧渲染前调用 update: function(dt) {}, // update调用后调用 lateupdate: function(dt) {}, // 节点的active由true变为false时,调用 onDisable: function() {}, // 节点调用destroy() 时调用,并在当前帧结束后统一调用 onDestroy: function() {}, });
关于onEnable和onDisable简要说明下:
// 组件激活后,会默认调用onEnable this.node.active = true; // 组件反激活后,会默认调用onDisable // 若active设置false后,组件的节点及其子节点会被隐藏 this.node.active = false;
而对于executionOrder的设置组件的执行顺序,注意
/* 1. 对于onDisable, onDestroy无效 2. 对于onLoad, onEnable, start, update, lateupdate有效 */
....

浙公网安备 33010602011771号