Cocos Creator 建立和銷燬節點(摘自官方文件)
阿新 • • 發佈:2019-01-01
建立新節點
除了通過場景編輯器建立節點外,我們也可以在指令碼中動態建立節點。通過 new cc.Node()
並將它加入 到場景中,可以實現整個建立過程。
以下是一個簡單的例子:
cc.Class({
extends: cc.Component,
properties: {
sprite: {
default: null,
type: cc.SpriteFrame,
},
},
start: function () {
var node = new cc.Node('sprite ' + this.count);
var sp = node.addComponent(cc.Sprite);
sp.spriteFrame = this.sprite;
node.parent = this.node;
node.setPosition(0,0);
},
});
克隆已有節點
有時我們希望動態的克隆場景中的已有節點,我們可以通過 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);
},
});
建立預置節點
和克隆已有節點相似,你也設定你的預置(prefab)節點並通過 cc.instantiate
生成。使用方法如下:
cc.Class({
extends: cc.Component,
properties: {
target: {
default: null ,
type: cc.Prefab,
},
},
start: function () {
var scene = cc.director.getScene();
var node = cc.instantiate(this.target);
node.parent = scene;
node.setPosition(0,0);
},
});
銷燬節點
通過 node.destroy()
函式,可以銷燬節點。值得一提的是,銷燬節點並不會立刻發生,而是在當前 幀邏輯更新結束後,統一執行。當一個節點銷燬後,該節點就處於無效狀態,可以通過 cc.isValid
判斷
當前節點是否已經被銷燬。
使用方法如下:
cc.Class({
extends: cc.Component,
properties: {
target: cc.Node,
},
start: function () {
setTimeout(function () {
this.target.destroy();
}.bind(this), 5000);
},
update: function (dt) {
if ( !cc.isValid(this.target) ) {
this.enabled = false;
return;
}
this.target.rotation += dt * 10.0;
},
});