组件脚本生命周期
Cocos Creator组件脚本提供了生命周期的回调函数。
用户只要定义特定的回调函数,Creator 就会在特定的时期自动执行相关脚本,用户不需要手工调用它们。
目前提供给用户的生命周期回调函数主要有:
image.png
函数介绍
函数名 | 介绍 |
---|---|
onLoad | 组件脚本的初始化阶段 |
onEnable | 组件或所在节点的enable属性如果由false变为true时触发,在对象被创建时如果其enable本身为true时也会被触发一次,该次触发在onload之后,start之前。 |
start | 组件第一次被激活后调用一次,后续不会被再次触发。 |
update | 游戏在每一帧渲染前触发该方法 |
lateUpdate | 游戏在每一帧渲染后触发该方法 |
onDisable | 组件或所在节点被禁用时触发该方法,即enable属性由true变成false |
onDestroy | 组件被销毁时触发该方法 |
创建节点
新节点创建
除了通过场景编辑器创建节点外,可以在脚本中动态创建节点。
代码实例:
cc.Class({
extends: cc.Component,
properties: {
sprite: {
default: null,
type: cc.SpriteFrame,
},
},
start: function () {
// 创建节点
var node = new cc.Node('Sprite');
var sp = node.addComponent(cc.Sprite);
sp.spriteFrame = this.sprite;
node.parent = this.node;
},
});
代码中通过new cc.Node('Sprite');
创建新的节点。
克隆已有的节点
克隆已经存在的节点,通过 cc.instantiate 方法完成。使用方法如下:
cc.Class({
extends: cc.Component,
properties: {
target: {
default: null,
type: cc.Node,
},
},
start: function () {
var scene = cc.director.getScene();
var node = cc.instantiate(this.target);
node.parent = scene;
node.setPosition(0, 0);
},
});
销毁节点
通过destroy(函数,可以销毁节点。
销毁节点并不会立刻被移除,而是在当前帧逻辑更新结束后,统一执行。
当一个节点销毁后,该节点就处于无效状态,可以通过 cc.isValid 判断当前节点是否已经被销毁。
cc.Class({
extends: cc.Component,
properties: {
target: cc.Node,
},
start: function () {
// 5 秒后销毁目标节点
setTimeout(function () {
this.target.destroy();
}.bind(this), 5000);
},
update: function (dt) {
if (cc.isValid(this.target)) {
this.target.rotation += dt * 10.0;
}
},
});
image.png
网友评论