2011-12-21 119 views
0

我的应用中有些东西很奇怪。我必须无数次地看过这条线,我发誓我没有看到任何错误。点击一个按钮,这个代码就会被执行,而精灵A应该位于精灵B的顶部。(Cocos2D)雪碧不是完全坐在其他雪碧的顶部?

不,我不能只做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之上。

是否有任何理由不按照我的要求工作?

谢谢!

回答

1

您使用boundingBox的一个精灵和contentSize其他:

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

是您spriteA任何缩小机会?

+0

是的,这是我的问题!不能相信我以前没有看到! :) – 2011-12-21 12:29:21

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>]; 
+0

Z值不是问题。它与精灵的定位有关。它应该*看起来*像精灵B位于精灵A顶部。 – 2011-12-21 05:23:39

+0

您是否正在B精灵上运行一些操作..如果是,请在定位前停止它。 – Haroon 2011-12-21 05:51:52