CCNode的立场

时间:2012-10-15 08:52:27

标签: cocos2d-iphone composition cocos2d-x ccsprite

This post讨论了子类化CCSprite或将CCSprite作为成员的缺点/优点。

假设我有一个CCNode,其中有一个CCSprite作为成员 然后我将CCNode作为孩子添加到我的图层 并将CCSprite添加到CCNode。

现在我想改变CCSprite的位置,我应该改变包含CCSprite或CCSprite本身的CCNode的位置吗?

如果我改变CCSprite的位置,CCNode的位置会发生什么变化?

  • 编辑
    这被认为是可接受的做法吗? 我最好设置CCNode的位置,让CCSprite定位在CCNode的哪个位置?

5 个答案:

答案 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的位置,您可以直观地获得相同的结果(其父级不会移动),但它会使精灵的位置更加复杂和混乱。