如何将cc labelttf置于精灵内部

时间:2012-08-31 13:13:04

标签: cocos2d-iphone

所以基本上我想在精灵中添加一些文本并将其居中(将其置于中心位置,无论文本的大小如何)

What I want

The issue

Here is with debugdraw

3 个答案:

答案 0 :(得分:4)

你可以设置

myLab.position = ccp(mySprite.contentSize.width/2, mySprite.contentSize.hieght/2);
[mySprite addChild: myLab];

用这个享受...

答案 1 :(得分:1)

默认情况下,您将位置设置为标签的中心。当然,如果你没有改变它的锚点。所以,这段代码

[label setPosition: ccpMult(ccpFromSize(sprite.contentSize), 0.5f) ];
[sprite addChild: label];

将您的标签放在中心

答案 2 :(得分:1)

假设精灵和标签都有相同的父级:

label.position = sprite.position;

假设label是精灵的孩子:

label.position = ccp(sprite.contentSize.width * sprite.anchorPoint.x,
                     sprite.contentSize.height * sprite.anchorPoint.y);

如果修改任一节点的anchorPoint,则会使问题复杂化。这可能解释了你注意到的偏移。在第一种情况下,我不会修改任何节点的anchorPoint。在第二种情况下,您可以修改精灵的anchorPoint而不是标签。

一个常见的错误是使用纹理的contentSize属性(即sprite.texture.contentSize),因为这将为您提供纹理的尺寸,通常是两个尺寸的幂。例如,尺寸为100x200的图像会创建一个100x200的sprite.contentSize,但由于填充到下一个最接近的二维幂,纹理尺寸将为128x256。

顺便说一句,您的示例图片在字体上方和下方显示相等数量的填充。这可能是“透支”字符或下标和类似的预留空间。这似乎很正常。只要两侧有相同数量的填充,这种填充不会影响标签的居中。填充还可能取决于您正在使用的字体类型。

提示 打开ccConfig.h并通过修改此行打开边界框的绘图:

#define CC_SPRITE_DEBUG_DRAW 1

这也打开了CCLabelTTF的边界框,尽管名称。它可能会帮助您调试问题。