动态修改prefab中的sprite和label失败

Prefab是 一个背景图元素,背景图元素的子节点为 一个label 一个sprite, 名字叫skillintro,

js代码如下(其中layout为一个layout node):
cc.loader.loadRes(jsonData.src, function (err, spriteFrame) {

            if (err) {
                cc.error(err.message || err);
                return;
            }


            //todo
            var prefab = cc.instantiate(that.skillintro);

            prefab.getComponent(cc.Sprite).node.spriteFrame = spriteFrame;

            prefab.getChildByName("New Label").string = jsonData.intro;

            layout.addChild(prefab,999,"prefab");

            console.log(layout.getChildByName("prefab").getChildByName("New Label").string);
        });

控制台不报任何错,列表背景图正常显示,但是预制资源中的label与sprite内容没有显示,数据我都打过断点看过,一切正常

代码中 that是 js的this


有大神没。。。。帮帮忙。。。

prefab.getComponent(cc.Sprite).node.spriteFrame = spriteFrame;
prefab.getComponent(cc.Sprite).spriteFrame = spriteFrame;

prefab.getChildByName(“New Label”).getComponent(cc.Label).string = jsonData.intro;

1赞

大神! 文字可以了 但是图不行

大神! 文字可以了 但是图不行

需要 new 一个 SpriteFrame 实例进行赋值;
prefab.getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(spriteFrame);

1赞

两位老哥。。。。我只能给你们一句。。。牛逼!

厉害了,也遇到这个问题了,搜贴之后根据这个解决了,多谢大神。另外大神可以的话帮忙讲下原理,谢啦!(正常情况下楼主那么些事没问题的,是因为预制资源的原因吗?)