【问题标题】:Reuse Cocos2d CocosNodes重用 Cocos2d CocosNodes
【发布时间】:2009-04-12 05:59:05
【问题描述】:

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

我现在正在做的事情如下:

  • 在我的初始化中,我将所有数字精灵加载到一个数组中,这样该数组就有 10 个项目。

  • 我创建了一个方法,它将当前分数(例如 2000)分解为单个数字并从数组中获取精灵,然后将它们添加到父 CocosNode* 对象中。

  • 每一秒我都通过它的标签获取父 CocosNode 并用新的父对象替换它。

目前我已经遇到了这个问题,因为分数 2000 使用了 3 次 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 中以正确的方式处理这个问题,还是有一些标准功能呢?另外,如果这是正确的,我怎样才能“重用”精灵?

【问题讨论】:

    标签: iphone cocoa cocoa-touch cocos2d-iphone


    【解决方案1】:

    我相信你想使用LabelAtlas class,你只需要提供一个兼容的位图(就像 fps 计数器使用的那样)。

    【讨论】:

    • 非常感谢!经过一番搜索,我遇到了这个解决方案。我什至修改了 LabelAtlas 类以支持字符填充。我稍后会提供补丁。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-19
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多