如何在createWithSpriteFrameName中使用动态精灵名称?

时间:2016-10-27 15:44:06

标签: c++ c++11 cocos2d-x

我想根据Cocos2d-x和C ++中的一些动态变量更改精灵图像,所以我试试这样的事情,但是有一个错误。这可能是一种正确的方法吗?问候。

auto name = String::createWithFormat("x%i.png", _destroyedUnits);
auto combo = Sprite::createWithSpriteFrameName(name);

我已经看到createWithSpriteFrameName接受C ++ basic_string,而不是Cocos String,所以我创建了这样的输出是"名称是:??"

int _destroyedUnits = 20;
std::string intToString = std::to_string(_destroyedUnits);
std::string name("x" + intToString);
CCLOG("The name is: %s", name);

做正确的方法是什么?问候。

2 个答案:

答案 0 :(得分:1)

正如cocos2d-x测试中所建议的,正确的方法是使用sprintf,你可以像这样使用它:

char tmp[30];
sprintf(tmp,"x%i.png", _destroyedUnits);
std::string atlasName = tmp;
auto combo = Sprite::createWithSpriteFrameName(atlasName.c_str());

答案 1 :(得分:0)

我已经看到createWithSpriteFrameName接受C ++ basic_string,而不是Cocos String,所以方法是使用string而不是String类。

int _destroyedUnits = 4;
std::string intToString = std::to_string(_destroyedUnits);
std::string name("x" + intToString + ".png");  
auto combo = Sprite::createWithSpriteFrameName(name);

问候。