使用instantiate克隆出来的粒子所有属性设置没效

playFire: function(){
        var a = this.fire.getComponent(cc.ParticleSystem);
        var red = Math.random()*255;
        var green = Math.random()*255;
        var blue = Math.random()*255;
        cc.log(red+","+green+","+blue+",")
        a.endColor=new cc.Color(red, green, blue);
        var f2 = cc.instantiate(this.fire);
        var scene = cc.director.getScene();
        f2.parent = scene;
        this.fire.x = 480-Math.random() * 480*2;
        this.fire.y = 320-Math.random() * 320*2;
        f2.x = Math.random() * 480*2;
        f2.y = Math.random() * 320*2;
        var b = f2.getComponent(cc.ParticleSystem);
        b.endColor=new cc.Color(red, green, blue);
        a.resetSystem();
        b.resetSystem();
        cc.audioEngine.playEffect(this.soundClip, false);
    },

想通过使用instantiate克隆出一个粒子,但克隆出来的粒子属性设置都不生效,求大神赐教!!!

可能有两个原因,一是你的 Custom 没有启用,二是 Creator 的 bug 导致了 instantiate 的同一帧设置了 Custom 无效。

很抱歉 Custom 无效的 bug 是由于 file 属性异步加载引起的,要在下个版本才会修复。现在请先在做完以上操作后,使用 scheduler 或者 setTimeout 等手段,延迟几帧再设置 b.custom = true

1赞

延迟了果然可以了:grinning:,感谢jare大神哈,感谢cocos引擎!

2.0.9 版本 延时后问题还是没有解决。 直接拖到场景上完全没问题。 如果 用 instantiate 就会出问题。

我找到问题了。 和他们的还有点不一样。 我的问题是升级版本导致的。
升级版本到2.0.9以后粒子 instantiate 就会丢属性 (延时也无法解决) 直接托到场景里是正常的。

我把属性删除后 重新设置属性后 回复正常。 估计是升级版本导致的 看上去属性正常 instantiate 后会异常 重新设置后 instantiate 正常了。