Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios (Cocos2D)雪碧没有完美地坐在其他雪碧的上面?_Ios_Animation_Cocos2d Iphone_Ccsprite - Fatal编程技术网

Ios (Cocos2D)雪碧没有完美地坐在其他雪碧的上面?

Ios (Cocos2D)雪碧没有完美地坐在其他雪碧的上面?,ios,animation,cocos2d-iphone,ccsprite,Ios,Animation,Cocos2d Iphone,Ccsprite,我的应用程序有点奇怪。我肯定已经看过这条线无数次了,我发誓我没有看到任何问题。几乎只需点击一个按钮,这段代码就会被执行,精灵a应该位于精灵B之上 不,我不能只对这个地方进行设置位置,因为在动画中,精灵A将与精灵B一起移动 所以这里发生的事情是,精灵A最终比精灵B的顶部高出了30个像素。我不知道这是为什么这是我执行此操作的代码: spriteA.position = ccp(cgpoint.x , spriteB.position.y + spriteB.boundingBox.size.heig

我的应用程序有点奇怪。我肯定已经看过这条线无数次了,我发誓我没有看到任何问题。几乎只需点击一个按钮,这段代码就会被执行,精灵a应该位于精灵B之上

不,我不能只对这个地方进行设置位置,因为在动画中,精灵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位置设置为一个与这个问题无关的CG点,但我将Y位置设置为sprite B的当前位置,然后我加上sprite高度的一半来说明锚定点问题,最后,我添加了spriteA的一半高度,以便在动画中它可以完美地位于spriteB的顶部

有什么原因导致它不能像我希望的那样工作吗


谢谢

如果要设置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>];
[self addChild:spriteA z:1标记:];
[self addChild:spriteB z:0标记:];

一个精灵使用boundingBox,另一个精灵使用contentSize:

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

您的spriteA是否有可能缩小尺寸?

Z值不是问题所在。这与精灵的定位有关。它应该看起来像精灵B位于精灵A的顶部。您是否正在对精灵B运行某些操作。。如果是,请在定位之前停止。是的,这是我的问题!真不敢相信我以前没见过!:)