美文网首页
(六)创建和销毁节点

(六)创建和销毁节点

作者: 菜鸟_一枚 | 来源:发表于2016-12-07 15:44 被阅读219次

(六)创建和销毁节点

创建新节点

除了通过场景编辑器创建节点外,我们也可以在脚本中动态创建节点。通过 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;
  },
});

相关文章

  • (六)创建和销毁节点

    (六)创建和销毁节点 创建新节点 除了通过场景编辑器创建节点外,我们也可以在脚本中动态创建节点。通过 new cc...

  • Android线程池实现原理

    线程池的好处 频繁的创建和销毁线程,会带来性能的问题。线程的创建和销毁都需要时间,当有大量的线程创建和销毁时,那么...

  • Java语言进阶篇:Android线程池实现原理

    线程池的好处 频繁的创建和销毁线程,会带来性能的问题。线程的创建和销毁都需要时间,当有大量的线程创建和销毁时,那么...

  • springboot监听器

    1:监听ServletRequest的创建和销毁 2:监听HttpSession的创建和销毁 可以通过修改Sess...

  • Effective Java Note (对象的创建和销毁)

    Effective Java Note (对象的创建和销毁) 一、对象的创建和销毁 1. 考虑使用静态工厂方法替代...

  • EffectJava翻译系列(第一章:创建和销毁对象)

    1.创建和销毁对象 这个章节包含创建和销毁对象,什么时候和怎样创建,什么时候避免创建,如何确保对象在准确的时机销毁...

  • android 线程池原理

    android 线程池原理 线程池的好处 1.频繁的创建和销毁线程,会带来性能的问题。线程的创建和销毁都需要时间,...

  • 线程池原理

    线程池,关注如何缩短频繁线程创建和销毁的时间,通过线程复用技术,减少非核心任务的时间损耗(创建和销毁的时间),提高...

  • AsyncTask

    AsyncTask出现的契机 线程的创建和销毁都会有开销,如果在进程中频繁的创建和销毁线程,是不可取的。应该采用线...

  • 线程池的优点和线程池的参数

    优点 线程池可以减少线程的创建和销毁,达到节约资源的效果 由于不需要创建和销毁,可以提高任务的执行效率 线程是稀有...

网友评论

      本文标题:(六)创建和销毁节点

      本文链接:https://www.haomeiwen.com/subject/ppodmttx.html