"结合"将CCSprite转换为CCLabelTTF

时间:2014-10-08 21:08:54

标签: objective-c cocos2d-iphone

我有一个游戏商店,玩家可以购买物品。我有一个CCLabelTTF输出一个项目的价格,旁边有一个CCSprite,它是一个硬币(货币)的图像。由于项目的价格随着用户获得更多项目而变化,因此标签文本开始与标签旁边的硬币CCSprite重叠。我正在努力使硬币CCSprite根据标签位置定位。除了将CCSprite作为子项添加到CCLabelTTF之外,还有更好的方法吗?比如在CCSprite

中包含CCLabelTTF

现在我有这个:

coinIcon = [CCSprite spriteWithImageNamed:@"coin.png"];
[coinIcon setScale:0.3];
priceLabel.string = [NSString stringWithFormat:@"%.Lf", price];
[priceLabel addChild:coinIcon];

我也尝试setPositionInPoints,但每当我设置位置coin时,屏幕上就不再出现了。这是我使用这种方法时遇到的主要问题。它可以在没有设置位置的情况下正常工作,但我需要硬币位于priceLabel的左侧。当我尝试设置位置并运行应用程序时,它不会显示在屏幕上。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

使用CCNode作为容器,如下所示:

// CCSprite and CCLabelTTF are by default anchored (.5,.5)
// so make label same height as coin and it will line dead-center
// to the coin's vertical apex

float offsetInPoints = 8.f;
float labelWidthInPoints = 80.f;
CCNode* priceNode = [CCNode node];
coinIcon = [CCSprite spriteWithImageNamed:@"coin.png"];
[coinIcon setScale:0.3];
priceLabel.string = [NSString stringWithFormat:@"%.Lf", price];
priceLabel.horizontalAlignment=CCTextAlignmentLeft;
priceLabel.dimensions=CGSizeMake(labelWidthInPoints,coinIcon.contentSizeInPoints.height);
[priceNode addChild:coinIcon];
[priceNode addChild:priceLabel];
priceLabel.positionInPoints = ccpAdd(coinIcon.positionInPoints, 
   ccp(coinIcon.contentSizeInPoints.width+offsetInPoints,coinIcon.position.y));

将价格标签放在硬币右侧的常量offsetInPoints,无论价格如何。

未经测试,已从内存中编码