Cocos2d-x 3.2错误-将数组更改为向量

Cocos2d-x 3.2 Error - Change Arrays to Vectors?

本文关键字:向量 数组 错误 Cocos2d-x      更新时间:2023-10-16

我得到一个错误与以下代码,因为我使用数组而不是向量。使用向量来编写代码的最佳方法是什么?

CCAnimate* createAnimate(int frameCount, float duration, const char* imageName)
{
   CCArray * spritesArray = CCArray::create();
   for (int i = 0; i < frameCount; i++) {
      CCString *spritePath = CCString::createWithFormat("%s%i.png",imageName,i);
      CCSprite *sprite = CCSprite::create(spritePath->getCString());
      spritesArray->addObject(sprite);
   }
   CCArray *animationFrames = CCArray::create();
   for (int i = 0; i < spritesArray->count(); i++) {
      CCSprite *sprite = (CCSprite*)spritesArray->objectAtIndex(i);
      CCSpriteFrame *frame = sprite->displayFrame();
      animationFrames->addObject(frame);
   }
   CCAnimation* animation =  CCAnimation::createWithSpriteFrames(animationFrames,duration);
   CCAnimate* animate= CCAnimate::create(animation);
   return animate;    
}
Vector<SpriteFrame*> VillanspriteFrames(frameCount);
    for (int i = 1; i <= frameCount; i++) {
    char fileName[128] = { 0 };
    sprintf(fileName, "imageName%d.png", i);
    auto frames = spriteCache->getSpriteFrameByName(fileName);
    VillanspriteFrames.pushBack(frames);
}
auto swordRun = Animation::createWithSpriteFrames(VillanspriteFrames,
        duration);
swordRun->setRestoreOriginalFrame(true);
auto animate = Animate::create(swordRun);
return animate;

要使用这段代码,你必须使用一个.plist文件,使用Texture packer,使用所需的名称打包其中的所有文件。在你的Init方法中添加一个纹理文件,比如…

SpriteFrameCache *spriteCachespriteCache = SpriteFrameCache::getInstance();
spriteCache->addSpriteFramesWithFile("FightAnim.plist", "FightAnim.png");

SpriteFrameCache是一个单例对象。