利用Coco2dx提取plist中的图片

做一个Demo,需要利用序列帧图片,想到Cocos2dx能够解析plist文件获取打包后图片中的小图片,就想如果Cocos2dx能够提供保存精灵/纹理到文件中的方法,那么就可以将plist文件中的小图片提取出来。果不其然,RenderTexture类提供了saveToFile方法,用于将纹理保存到文件中,下面直接上代码以供以后参考

void GameScene::SaveFiles()
{
    //加载plist文件到缓存
    SpriteFrameCache::getInstance()->addSpriteFramesWithFile("fish.plist");

    std::stringstream ss;
    std::string filename;

    //遍历序列帧图片
    for (int i=0; i<10; i++)
    {
        ss.clear();
        ss.str("");
        ss << "fish_" << (i + 1) << ".png";
        filename = ss.str();

        //获取精灵
        auto sprite = Sprite::createWithSpriteFrameName(filename);
        sprite->setAnchorPoint(Vec2::ZERO);
        float width = sprite->getContentSize().width;
        float height = sprite->getContentSize().height;

        //创建渲染纹理
        auto render = RenderTexture::create(width, height, Texture2D::PixelFormat::RGBA8888);
        render->setSprite(sprite);

        //填充纹理
        render->beginWithClear(0, 0, 0, 0);
        sprite->visit();
        render->end();

        //文件被保存在类似于C:UsersAdministratorAppDataLocalProjectName的路径中
        render->saveToFile(filename, Image::Format::PNG);
    }

    //从缓存移除plist文件
    SpriteFrameCache::getInstance()->removeSpriteFramesFromFile("fish.plist");
}
原文地址:https://www.cnblogs.com/aibox222/p/8716029.html