0

我的应用程序中有些东西很奇怪。我一定看过这条线无数次,我发誓我看不出有什么问题。几乎只需单击一个按钮,这段代码就会被执行,并且精灵 A 应该位于精灵 B 的顶部。

不,我不能只对该位置执行 setPosition,因为在动画期间精灵 A 将与精灵 B 一起在其上方移动。

所以这里发生的情况是,精灵 A 最终比精灵 B 的顶部高了 30 个像素。我不知道这是为什么。这是我执行此操作的代码:

spriteA.position = ccp(cgpoint.x , spriteB.position.y + spriteB.boundingBox.size.height/2 + spriteA.contentSize.height/2);

所以这里发生的事情是我将 sprite A 的 X 位置设置为与这个问题无关的 CGPoint,但我将 Y 位置设置为 spriteB 所在的当前位置,然后我添加 spriteB 的一半高度以说明锚点点问题,最后,我添加了 spriteA 的一半高度,以便在动画期间它应该完全位于 spriteB 的顶部。

有什么理由不能按我的意愿工作吗?

谢谢!

4

2 回答 2

1

如果你想设置 B 精灵的 A 顶部,你应该注意精灵的 z 顺序。如果 A 具有更多 z 值,当 A 和 B 具有相同的位置和锚点时,A 将位于 B 的顶部。

您可以在添加子项时设置 z 值,如下所示:

[self addChild:spriteA z:1 tag:<tagValue int>];
[self addChild:spriteB z:0 tag:<tagValue int>];
于 2011-12-21T05:16:21.980 回答
1

您将 boundingBox 用于一个精灵,将 contentSize 用于其他精灵:

spriteB.boundingBox.size.height/2 + spriteA.contentSize.height/2

你的 spriteA 是否被缩小了?

于 2011-12-21T08:10:06.863 回答