1. 程式人生 > >Cocos Creator 建立和銷燬節點(摘自官方文件)

Cocos Creator 建立和銷燬節點(摘自官方文件)

建立新節點

除了通過場景編輯器建立節點外,我們也可以在指令碼中動態建立節點。通過 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;
  },
});