This post讨论了子类化CCSprite或将CCSprite作为成员的缺点/优点。
假设我有一个CCNode,其中有一个CCSprite作为成员 然后我将CCNode作为孩子添加到我的图层 并将CCSprite添加到CCNode。
现在我想改变CCSprite的位置,我应该改变包含CCSprite或CCSprite本身的CCNode的位置吗?
如果我改变CCSprite的位置,CCNode的位置会发生什么变化?
答案 0 :(得分:2)
当您有多个要与节点一起移动的精灵时,将CCSprite添加为CCNode的子节点会很有帮助。
考虑玩家精灵的例子。假设你想在播放器下面放一个阴影。将阴影精灵和玩家精灵添加到父CCNode允许它们都轻松移动。
如果您有一个没有其他精灵的精灵,您想要随之移动,那么您不需要CCNode父级。
答案 1 :(得分:0)
你的精灵什么都不会发生。如果你没有为你的精灵容器设置内容大小和锚点,节点的位置总是等于节点的位置(0.f,0.f)。所以,你的精灵的位置将与它的父亲(0.f,0.f)
相关答案 2 :(得分:0)
基本上,cocos2d-x中的所有节点都有一个父节点(场景除外)。
更改父节点的位置会将位置更改应用于其所有子节点
更改子节点的位置不会影响任何内容,除非此子节点有自己的子节点。
在您的示例中,如果更改CCSprite位置,CCNode的位置将保持不变。但是,如果您更改了CCNode的位置,Sprite上将会发生相同的更改(在屏幕上移动)。
答案 3 :(得分:0)
你想设置精灵的位置。原因很简单,节点可能包含其他子节点,这些子节点应该能够独立于精灵移动。
更改节点的位置根本不会影响父节点的位置。同样,更改父级的位置根本不会更改子节点位置。子节点位置是其父位置的偏移量,因此如果移动父节点,它们将跟随它们,但它们的位置属性(相对于父位置)保持不变。
答案 4 :(得分:0)
您最好移动CCNode的位置,因为CCSprite的位置也受其父级的影响。 虽然通过移动CCSprite的位置,您可以直观地获得相同的结果(其父级不会移动),但它会使精灵的位置更加复杂和混乱。