2012-08-31 70 views
0

我想在CCSprite的頂部添加一個標籤,無論標籤上的文字大小是多少,都應該精確地居中在精靈的中間/中間位置。居中CCLabel恰好在CCSprite的中心

繼承人我現在代碼:

self.background = [CCSprite spriteWithFile:@"LetterBrick.png"]; 
    self.background.position = CGPointZero; 
    [self addChild:self.background]; 
    _letterLabel = [CCLabelTTF labelWithString:self.letter fontName:@"ChunkFive" fontSize:35];  
    [self addChild:_letterLabel]; 

和輸出:

enter image description here 我只是希望它低一點嘿嘿。

正如你所看到的x位置很好,但y位置太高。 :(

回答

1

CCLabel的anchorPoint是(0.5F,0.5F)默認情況下,如果你希望它是在市中心的它的父(背景你的精靈,在這種情況下, ),只需設置標籤的位置,以精靈的中心

CGPoint backSize = background.contentSize; 
[label setPosition:ccp(backSize.width/2, backSize.height/2)]; 

或等於它

[label setPosition:ccpMult(ccpFromSize(background.contentSize), 0.5f)]; 
+0

'self.background = [CCSprite spriteWithFile:@「讓terBrick.png「]; [self addChild:self.background]; _letterLabel = [CCLabelTTF labelWithString:self.letter fontName:@「ChunkFive」fontSize:35.0f]; CGSize backSize = self.background.contentSize; _background.position = ccp(backSize.width/2,backSize.height/2); [self addChild:_letterLabel];'沒有工作:( – chrs

+0

儘量不要在評論中張貼代碼,它很難閱讀它,無論如何,正如我看到的,你將位置設置爲背景,而不是你的標籤。 ,對不起,剛纔注意到,你不會將你的標籤添加到你的背景中,但是它們都有相同的父項。對我而言,它並不舒適。你可以爲字母創建對象,該對象將包含背景和標籤。默認情況下,這個標籤是空的,但你可以添加方法setLetter來改變它,它會使代碼更清晰 – Morion

+0

好吧,我設法得到x位置好的sprite上的標籤,但是y有點偏離,標籤的底部在中間雖然..(這不是它應該是嘿嘿) - 我實際上希望它與wordfeud字母完全一樣(在中間) – chrs

0

試試這個

_letterLabel.anchorPoint = ccp(0.5f,0.5f); 
_letterLabel.position = ccp(sprite.position.x, sprite.position.y);