addChild问题

两个文件,一个主角文件Player.cpp一个游戏场景文件GameScene.cpp都继承的Layer
在将主角文件中的主角加入到游戏场景中时发现一个问题有些困惑
代码如下:
Player.cpp:
//创建主角
auto player = Sprite::create(“player.png”);
player->setPosition(240,160);
this->addChild(player);

GameScene.h:
private:
Player *player;

GameScene.cpp:
//加入主角到游戏场景
player = Player::create();
this->addChild(player);
问题是:
为何Player.cpp和GameScene.cpp中都要有this->addChild(player);才能把主角成功加入到游戏场景中?GameScene中的addChild很好理解,但是Player.cpp中的this->addChild(player)是为什么?是什么原理?为什么取消了Player.cpp中的addChild那游戏场景中也不会出现主角?

Player.cpp里的 player 是精灵, 楼主可以看下这篇
http://blog.csdn.net/bill_man/article/details/7214035

梳理下逻辑就清楚了,add后的节点关系: 主角精灵(Sprite) -> 主角层(也就是你继承自CCLayer的Player类实例) -> 游戏场景(GameScene实例) 。引擎渲染的时候是通过遍历节点来绘制的,所以如果主角精灵没有add到主角层上,那么它仅仅是Player类的一个成员而已,并不会在游戏更新时被渲染的。