Cocos2d iphone CCNode';s位置

Cocos2d iphone CCNode';s位置,cocos2d-iphone,composition,cocos2d-x,ccsprite,Cocos2d Iphone,Composition,Cocos2d X,Ccsprite,讨论子类化CCSprite或将CCSprite作为成员的利弊 假设我有一个CCNode,其中有一个CCSprite作为成员。 然后我将CCNode作为子节点添加到我的层中 并将CCSprite添加到CCNode 现在我想更改CCSprite的位置,我应该更改包含CCSprite或CCSprite本身的CCNode的位置吗 如果我更改CCSprite的位置,CCNode的位置会发生什么变化 编辑 这被认为是一种可接受的做法吗? 我是否最好设置CCNode的位置,让CCSprite定位在CCNod

讨论子类化CCSprite或将CCSprite作为成员的利弊

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

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

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

  • 编辑
    这被认为是一种可接受的做法吗?
    我是否最好设置CCNode的位置,让CCSprite定位在CCNode所在的位置
      您的精灵不会发生任何事情。如果未将内容大小和定位点设置为精灵的容器,则节点的位置将始终等于节点的位置(0.f,0.f)。所以,精灵的位置将与其父节点(0.f,0.f)相关。

      基本上,cocos2d-x中的所有节点都有一个父节点(场景除外)

      更改父节点的位置将对其所有子节点应用位置更改

      更改子节点的位置不会影响任何内容,除非该子节点有自己的子节点


      在您的示例中,如果更改CCSprite位置,CCNode的位置将保持不变。但是,如果您更改了CCNode的位置,同样的更改(在屏幕上移动)也会发生在精灵上。

      当您有多个精灵要随节点一起移动时,将CCSprite添加为CCNode的子节点会很有帮助

      考虑一个玩家精灵的例子。假设你想在玩家下方放置一个阴影。将阴影精灵和玩家精灵添加到父节点可以轻松移动它们


      如果您有一个没有其他要移动的精灵的精灵,则不需要CCNode父节点。

      您要设置精灵的位置。原因很简单,节点可能包含其他子节点,这些子节点应该能够独立于精灵移动


      更改节点的位置根本不会影响父节点的位置。同样,更改父节点的位置根本不会更改子节点的位置。子节点位置是相对于其父节点位置的偏移,因此如果移动父节点,它们将跟随,但其位置属性(相对于父节点位置)保持不变。

      您最好移动CCNode的位置,因为CCSprite的位置也受其父节点的影响。
      虽然通过移动CCSprite的位置,您将在视觉上获得相同的结果(其父对象未移动),但这会使获取sprite的位置变得更加复杂和混乱

      节点的位置始终等于节点的位置(0.f,0.f)?没有在任何节点内获得itall定位是相对于它的(0.f,0.f)完成的。如果节点具有contentSize,则(0.f,0.f)将位于其左下角。如果您的容器节点没有contentSize,您可以考虑其宽度和高度为0。所以,在这种情况下,它的“左下角”将等于它的位置。