NODE节点和sprite组件和sprite节点关系?

NODE节点和sprite组件和new 出来的sprite节点是什么关系,官网说的很迷糊

给你打个比喻: 节点像一个人,组件则像这个人身上的装备,Sprite就像一件衣服,改变了节点的外观。一个节点可以装备多套装备,装备你还可以自己打造,就是自己写的组件代码。想想常玩的游戏,如魔兽、英雄联盟这些,英雄与装备的设计。

上面的比喻只说单个方向,再给你打个比方: 节点像一台机甲(小时候看过神龙斗士没有?),组件就像坐进机甲里的操纵者,操纵者有自己的特性,让机甲有不同的表现。而且这一台机甲可以坐很多个人,也就是很多个组件。

你说的 new出来的sprite,那是cocos2d-x/js中的概念了,在Creator中Sprite不能直接new出来,是先有机甲,再有给机甲中添加一个Sprite

let node = new cc.Node();
let sprite = node.addComponent(cc.Sprite);
sprite.xxx = yyy; // 给sprite赋值
node.x = 100; //给节点赋值
cc.log(sprite.node === node); // sprite内部操纵node

如果你觉得上面的方式创建一个Sprite很麻烦,你可以将他封装一下,可以尝试下面的方法:

cc.createComponent = function (componentType, parent) {
    let node = new cc.Node();
    if (parent instanceOf cc.Node) {
        node.parent = parent;
    }
    let component = node.addComponent(componentType);
    return component;
};

//创建一个
let sprite = cc.createComponent(cc.Sprite);
let label = cc.createComponent(cc.Label);

推荐你看下我写的节点与组件的概念分享
http://www.jianshu.com/p/fc46301305fa
http://www.jianshu.com/p/2b92157179d3

也欢迎你关注我的微信公众号