Cocos2dx杂记:cocos2dx 3.14.1 Spine 处理与 cocos2dx3.10 Spine的区别

一、在游戏中经常用到Spine动画,在cocos2dx 3.10之前创建Spine动画可以采用

1、第一种方式

auto spine = SkeletonAnimation::createWithFile("spine.json", "spine.atlas");

但是当json文件过大时每次解析会消耗大量时间导致卡顿

2、第二种方式

//获得数据
spAtlas* _atlas = spAtlas_createFromFile("spine.atlas", 0); 
spSkeletonJson* _json = spSkeletonJson_create(_atlas);
auto spData = spSkeletonJson_readSkeletonDataFile(_json , "spine.json");
//创建
auto spine = SkeletonAnimation::createWithData(spData);

第二种方式通过创建data避免多次解析json文件

二、cocos2dx 3.14.1 spine创建的区别

1、第一种方式

auto spine = SkeletonAnimation::createWithJsonFile("spine.json", "spine.atlas");

方法名称改为createWithJsonFile,同样当json文件过大时每次解析会消耗大量时间导致卡顿

2、第二种方式

//获得数据
spAtlas* _atlas = spAtlas_createFromFile("spine.atlas", 0);
auto _attachmentLoader = Cocos2dAttachmentLoader_create(_atlas );
spSkeletonJson* _json = spSkeletonJson_createWithLoader(&_attachmentLoader ->super);
auto spData = spSkeletonJson_readSkeletonDataFile(_json , "spine.json");
//创建
auto spine = SkeletonAnimation::createWithData(spData);

可以看出在获得data数据的时候变成了如下方式

auto _attachmentLoader = Cocos2dAttachmentLoader_create(_atlas );
spSkeletonJson* _json = spSkeletonJson_createWithLoader(&_attachmentLoader ->super);

我们来看一下库文件,可以看出数据获取的方式发生了改变

void SkeletonRenderer::initWithJsonFile (const std::string& skeletonDataFile, spAtlas* atlas, float scale) {
    _atlas = atlas;
    _attachmentLoader = SUPER(Cocos2dAttachmentLoader_create(_atlas));

    spSkeletonJson* json = spSkeletonJson_createWithLoader(_attachmentLoader);
    json->scale = scale;
    spSkeletonData* skeletonData = spSkeletonJson_readSkeletonDataFile(json, skeletonDataFile.c_str());
    CCASSERT(skeletonData, json->error ? json->error : "Error reading skeleton data.");
    spSkeletonJson_dispose(json);

    setSkeletonData(skeletonData, true);

    initialize();
}

如果还是运用老的创建方式的话,可以正常编译,但是在运行的过程中

void SkeletonRenderer::draw (Renderer* renderer, const Mat4& transform, uint32_t transformFlags) 方法里面获得attachmentVertices->_triangles将无法获取

这里写图片描述

运行到如下标记的地方将导致程序崩溃
这里写图片描述

这里写图片描述

这里写图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值