我正在尝试创建包含5个精灵的数组精灵,0.png
,1.png
,2.png
,3.png
,4.png
。
我希望它们随机出现在屏幕上。
以下是我的代码,但它没有用,有什么帮助吗?
std::vector <CCSprite*> _sprites;
_sprites.reserve(10);
int spritearray[5] = { 0.png,1.png,2.png,3.png,4.png }; // I AM GETTING ERROR HERE?
int i;
for(i=0;i<5;i++)
{
CCSprite* foo = new cocos2d::CCSprite();
int index = rand() % 5;
// foo->initWithFile(index);
foo->setPosition(ccp(60,50*i));
_sprites.push_back(foo); //store our sprites to do other stuffs later
this->addChild(foo,1);
}
答案 0 :(得分:1)
你的“逻辑”目前还不错,这是你遇到问题的实现。
如果您检查initWithFile
功能,则会看到它将文件名作为字符串。
所以你需要创建一个字符串数组(文件名),而不是一个整数数组。然后使用随机索引作为此文件名数组的索引,并将其作为参数传递给initWithFile
函数。
答案 1 :(得分:0)
好的,您使用的是我之前提供的相同代码:
std::vector <CCSprite*> _sprites;
_sprites.reserve(10);
std::vector<std::string> _spriteNames = {"0.png", "1.png", "2.png", "3.png", "4.png"};
for (int i=0;i < _spriteNames.size(); i++)
{
CCSprite* foo = cocos2d::CCSprite::create(_spriteNames.at(i));
int random = rand() % 5;
foo->setPosition(CCPoint((60 * random), (50 * random)));
_sprites.push_back(foo); // <- store your sprites to do stuff to them later.
addChild(foo, 1); //<-- this is adding the child.
}