在cocos2d中,我们一切ui的基础——节点的坐标系起始坐标依赖于父节点的坐标。当我们在一个node对象中使用addChild方法后,子节点的坐标是依赖于父节点。
也就是说如下代码:
1 | auto parent = Node::create(); |
child个人坐标系的位置是(5,10),然而因为是parent的子节点。所以child的世界坐标系位置应该加上父节点的坐标,也就是(5+10,10+20)。
通过这个原理我们就能很方便的控制子节点与父节点的坐标关系。
而其中layer和一般的节点不同。虽然layer继承于node,可以成为另一个node的子节点,但是当layer成为一个node的子节点后。其坐标起始点并不会改变。因为在源码中:
1 | bool Layer::init() |
规定了layer必须占满屏幕。所以不管父节点的坐标。layer必定占满整个屏幕。因此想通过父节点的坐标来控制子layer的坐标是办不到的。