我正在创建一系列的精灵,他们应该随意出现,但它正在发生?

时间:2014-05-06 11:31:27

标签: c++ cocos2d-x

我正在尝试创建包含5个精灵的数组精灵,0.png1.png2.png3.png4.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);
    }

2 个答案:

答案 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.
}