0

对 C++ 来说仍然很新,所以要轻松一点,但我在这里遇到了一个小问题。

我正在运行一个 for 循环来添加精灵帧,但是我在将我的 Objective-C 转换为 C++ 时遇到了一些问题

目标-c

    for (int i = 0; i < 24; i++) {
        [initalTurnAnimationFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: [NSString stringWithFormat:@"%@%d.png", tilt, i]]];
}

C++

for (int i = 0; i < 24; i++) {

    stringstream tempString;
    tempString <<i<<".png";        
    frameStore->addObject(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(tempString.str().c_str()));
}

但是每次我用一个引用“引用计数应该大于 0”的引用来获取错误的访问权限

请帮忙,如果我错过了我确定我有的基本概念,请您指出!

谢谢!

4

1 回答 1

0

SpriteFrames 与 Spritesheets 一起使用。添加一个精灵表

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(<#const char *pszPlist#>)

您可以使用许多工具创建精灵表。我使用纹理打包器。一个替代品应该是 Zwoptex。当你使用 Texturepacker 创建 Spritesheet 时,你会得到一个 Spritesheet 和一个 .plist 文件。上面的参数是 .plist 文件的名称。在这个 .plist 文件中是键。

CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(key)

该方法为您提供了来自先前添加的 Spritesheet 的 CCSpriteFrame*。如果您从未添加 Spritesheet,它会抛出您刚刚遇到的错误。

于 2012-06-24T19:03:38.910 回答