_Magic_Code 2019-02-24 17:47 采纳率: 100%
浏览 3878

cocos creator 销毁节点,和延时错误

    start :function(){
        var scene = cc.director.getScene();
        this.p_node = cc.instantiate(this.node);
        this.p_node.position = cc.v2(1,200);
        this.p_node.parent = scene;

        this.scheduleOnce(function() {
            cc.log('**************************************');
                        this.p_node.destroy();
        }, 2);
    }

这段代码,cc.log会一直输出,但是官方文档中的说法应该是只会执行一次啊,
而且在执行的时候,我创建出来的一个图片没有被销毁,log则是一直输出 Object already destroyed ,

如果改成setTimeOut则会直接报出 destroy of null

    start :function(){
        var scene = cc.director.getScene();
        this.p_node = cc.instantiate(this.node);
        this.p_node.position = cc.v2(1,200);
        this.p_node.parent = scene;

        setTimeout(function(){
            cc.log('**************************************');
            this.p_node.destroy();
        }.bind(this),2000);
    }

而且,注释掉这段代码后,退出游戏时,'Destroy WebGLBuffer OR Destroy WebGLTesture by GC' 最多不会超过十个,加上之后,游戏运行一段时间退出就会到达几百个,是哪个方面出错了吗,求大佬解答一下 - - 场景中只有一个Canvas 和一个Sprite 脚本是挂在Sprite上的

  • 写回答

2条回答 默认 最新

  • _Magic_Code 2019-02-25 15:06
    关注

    已找到,
    1 : setTimeout如果内部代码出错就会一直执行,
    2 : 拷贝节点赋值给公共参数会无法des,或者说log里面打印了des,但实际游戏中还是会有这个(不知道为什么,官网论坛没人回复),修改代码为

    start: function () {
          this.p_node = new cc.Node('Sprite');
          var sp = this.p_node.addComponent(cc.Sprite);
          sp.spriteFrame = this.getComponent(cc.Sprite).spriteFrame;
          this.p_node.parent = this.node;
          this.p_node.position = cc.v2(0,100);
          setTimeout(function(){
            p_node.destroy();
         }.bind(this), 2000);
     },
    ```运行正常
    
    MDZZ , 上面代码一直生成的节点出错了,也就是说我一直在生成和开启计时,对不起对不起 ,我的错
    
    评论

报告相同问题?

悬赏问题

  • ¥15 有卷积神经网络识别害虫的项目吗
  • ¥15 数据库数据成问号了,前台查询正常,数据库查询是?号
  • ¥15 算法使用了tf-idf,用手肘图确定k值确定不了,第四轮廓系数又太小才有0.006088746097507285,如何解决?(相关搜索:数据处理)
  • ¥15 彩灯控制电路,会的加我QQ1482956179
  • ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传
  • ¥15 (关键词-电路设计)
  • ¥15 如何解决MIPS计算是否溢出
  • ¥15 vue中我代理了iframe,iframe却走的是路由,没有显示该显示的网站,这个该如何处理
  • ¥15 操作系统相关算法中while();的含义
  • ¥15 CNVcaller安装后无法找到文件