(六)創(chuàng)建和銷毀節(jié)點(diǎn)
創(chuàng)建新節(jié)點(diǎn)
除了通過場景編輯器創(chuàng)建節(jié)點(diǎn)外沙峻,我們也可以在腳本中動態(tài)創(chuàng)建節(jié)點(diǎn)屏鳍。通過 new cc.Node() 并將它加入 到場景中悯森,可以實現(xiàn)整個創(chuàng)建過程盅蝗。
以下是一個簡單的例子:
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);
},
});
克隆已有節(jié)點(diǎn)
有時我們希望動態(tài)的克隆場景中的已有節(jié)點(diǎn),我們可以通過 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);
},
});
創(chuàng)建預(yù)置節(jié)點(diǎn)
和克隆已有節(jié)點(diǎn)相似媳友,你也設(shè)置你的預(yù)置(prefab)節(jié)點(diǎn)并通過 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);
},
});
銷毀節(jié)點(diǎn)
通過 node.destroy() 函數(shù)产捞,可以銷毀節(jié)點(diǎn)。值得一提的是哼御,銷毀節(jié)點(diǎn)并不會立刻發(fā)生坯临,而是在當(dāng)前 幀邏輯更新結(jié)束后,統(tǒng)一執(zhí)行恋昼。當(dāng)一個節(jié)點(diǎn)銷毀后看靠,該節(jié)點(diǎn)就處于無效狀態(tài),可以通過 cc.isValid 判斷 當(dāng)前節(jié)點(diǎn)是否已經(jīng)被銷毀液肌。
使用方法如下:
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;
},
});