添加多个子节点时失败,求正确姿势

准备在场景中添加一个图片,然后在图片上覆盖一个label,
代码如下,但是只显示了label出来,图片没显示,不创建label的话,图片可以显示。

        let dom = new cc.Node('Sprite')

        let sp = dom.addComponent(cc.Sprite)
        sp.spriteFrame = this.spriteFrame

        let label=dom.addComponent(cc.Label)   //不要这行,图片可显示,加了不显示图片

        dom.parent = this.node

求正确的添加姿势。。。

Label和Sprite本来就不能同时添加在一个节点里的。。你在编辑器里试试就知道了 ,只能要不就图片下再建一个节点来装Label组件

一个节点上只能添加一个渲染组件,sprite和label同属于渲染组件。

那该如何做?

就是再new一个cc.Node 里面addComponent(cc.Label),然后设置这个新节点的父节点是刚建的那个图片节点,或者跟你的图片节点同一个父节点都可以,看你的逻辑是怎么安排的啦

根据你的描述是想在一个节点上即显示图片,又显示文字。可以曲线救国哈。比如添加一个空节点,该节点下再添加两个节点,一个节点上添加sprite组件,另一个节点上添加label组件。

这种姿势可以。。。但是子元素的父节点只能是dom,不能是sp,何解?

        let dom = new cc.Node('Sprite')

        let sp = dom.addComponent(cc.Sprite)
        sp.spriteFrame = this.spriteFrame

        let subDom=new cc.Node('Label')
        let label=subDom.addComponent(cc.Label)
        subDom.parent = dom     //这里只能用dom,不能用sp,

        dom.parent = this.node

dom和sp不同一类吧,一个是节点,一个是组件,况且,一个组件只能归属以一个节点,且组件不能作为其他节点的parent。

好复杂的关系,能否这样理解
先用cc.Node创建一个节点,然后addComponent为这个节点添加组件,且只能添加一个渲染组件。
节点的parent只能是节点。

其实不是很复杂,习惯就好了。你的理解是对的,节点是节点,组件是组件,可以通过组件创建更多类型的节点。