1

这篇文章讨论了将 CCSprite 子类化或将 CCSprite 作为成员的利弊。

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

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

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

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

5 回答 5

2

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

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

如果您有一个没有其他想要移动的精灵的精灵,那么您不需要 CCNode 父级。

于 2012-10-16T08:49:14.520 回答
0

基本上,cocos2d-x 中的所有 Node 都有一个父 Node(Scene 除外)。

更改父节点的位置会将位置更改应用于其所有子节点,

除非该子节点有自己的子节点,否则更改子节点的位置不会影响任何事情。

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

于 2012-10-15T09:00:10.500 回答
0

你想设置精灵的位置。简单的原因是该节点可能包含其他应该能够独立于精灵移动的子节点。

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

于 2012-10-16T12:55:15.273 回答
0

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

于 2012-10-24T07:47:17.643 回答
0

你的精灵不会发生任何事情。如果您没有将内容大小和锚点设置为精灵的容器,则节点的位置将始终等于节点的位置 (0.f, 0.f)。因此,您的精灵的位置将与其父级(0.f,0.f)相关

于 2012-10-15T08:56:32.057 回答