我试图在我的iPhone游戏中创建一个很酷的得分计数器,我在photoshop中创建了0到9的数字,我想每秒更新一次得分。

我现在正在做以下事情:


在我的初始化中,我将所有数字精灵加载到一个数组中,以便该数组有10个项目。
我创建了一种将当前分数(例如2000)分解为个位数并从数组中获取子画面的方法,然后将它们添加到父CocosNode *对象。
每隔一秒钟,我就会通过其标签获取父CocosNode并将其替换为新的父对象。


目前,我已经遇到了问题,因为2000得分使用0位数三次,并且我无法重用精灵。

- (CocosNode*) createScoreString:(int) score
{
    NSLog(@"Creating score string : %d", score);
    NSString* scoreString = [NSString stringWithFormat:@"%d", score];

    int xAxes = 0;
    CocosNode* parentNode = [[Sprite alloc] init];
    for (NSInteger index = 0; index < [scoreString length]; index++)
    {
        NSRange range;
        range.length = 1;
        range.location = index;

        NSString* digit = [scoreString substringWithRange:range];

        Sprite* digitSpriteOriginal = [self.digitArray objectAtIndex:[digit intValue]];
        Sprite* digitSprite = [digitSpriteOriginal copy];
        [digitSprite setPosition:cpv(xAxes, 0)];

        xAxes += [digitSprite contentSize].width - 10;

        [parentNode addChild:digitSprite];
    }
    return parentNode;
}


我是在cocos2d中以正确的方式处理此问题,还是为此提供了一些标准功能?另外,如果这是正确的,我该如何“重用”精灵?

最佳答案

我相信您想使用LabelAtlas class,只需提供一个兼容的位图(如fps计数器使用的位图)。

09-07 13:55