(Cocos2D)Sprite没有完美地坐在其他精灵的顶部?

时间:2011-12-21 04:54:34

标签: ios animation cocos2d-iphone ccsprite

我的应用程序中有些奇怪。我必须无数次看过这条线,我发誓我没有看到任何错误。几乎只需点击一个按钮,就可以执行此代码并且精灵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);

所以这里发生的是我将精灵A的X位置设置为与此问题无关的CGPoint,但我将我的Y位置设置为spriteB所在的当前位置,然后我将spriteB的高度加到帐户的一半对于锚点问题,最后,我添加spriteA的一半高度,以便在动画期间它应该完美地位于spriteB的顶部。

有什么理由说这不能按照我的意愿行事吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

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

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

[self addChild:spriteA z:1 tag:<tagValue int>];
[self addChild:spriteB z:0 tag:<tagValue int>];

答案 1 :(得分:1)

对一个精灵使用边界框,对其他精灵使用contentSize:

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

你的精神是否会被任何机会缩小?