请重新下载一次解析包吧,我更新了帖子中的解析包
抱歉,2.2.0的我问了下底层人员,现在还没有2.2.0对应的解析包版本,因为牵扯引用的地方比较多,可以自己替换下,然后将更新后的方法名替换了
今天换了,发现还有内存泄露
CCArmatureData *CCDataReaderHelper::decodeArmature(const rapidjson::Value &json, DataInfo dataInfo)
{
…
for (int i = 0; i < length; i++)
{
const rapidjson::Value &dic = DICTOOL->getSubDictionary_json(json, BONE_DATA, i); //json;
CCBoneData *boneData = decodeBone(dic,dataInfo);
armatureData->addBoneData(boneData);
boneData->release();//这里少了一句
}
…
}
void CCDataReaderHelper::addDataFromFile(const char *filePath)
{
…
CCData data = new CCData(pBytes, size);
data->autorelease();//这里没有释放data
std::string load_str = std::string((const char)data->getBytes(), data->getSize());
…
}
另外,换了之后怎么读取数据编辑器到处的数据呢?整了半天都不行,我原来使用的那个类去掉了,没法用。。。*
我提交下这个错误。 你说的数据编辑器读数据读不到是方法名没了还是错加载不到数据?
2.2.0的什么时候可以放出?
读取数据我们都用的是 CSContentJsonDictionary.h 里面的 CSJsonDictionary 来读取的,现在这个类都去掉了,所以不知道怎么用rapidjson读取导出的数据
我自己也参考了里面解析ArmatureData的代码,不过数据编辑器导出的格式还是少了名称
例如:
{“id”:1,“name”:“shaolin”},{“id”:2,“name”:“wudang”},{“id”:3,“name”:“emei”}] 这是导出的原文件格式
但是使用rapidjson读取需要在前面加个标志(这里这么改是参考导出的ArmatureData文件格式)
{“data”: {“id”:1,“name”:“shaolin”},{“id”:2,“name”:“wudang”},{“id”:3,“name”:“emei”}] }
我不知道保存成什么格式,现在通过
rapidjson::Document doc;
doc.Parse<0>(pCityData); //这里有问题
读取不出来
后面跟进去看了下,好像用数据编辑器导出的文件最后有一些未知字符
然后程序走到
bool Parse(Stream& stream, Handler& handler)
{
…
if (stream.Peek() != ‘\0’)
RAPIDJSON_PARSE_ERROR(“Nothing should follow the root object or array.”, stream.Tell());
…
}
这里就报错了,结尾不等于‘\0’,前面解析没什么问题
我少做了一步转换,用CCData转一下,就可以读取了。。
修改后,骨骼动画缩放导出,只有图片缩放了,骨骼数据没有缩放,赶紧去修复,这个问题很严重,急急急!!!
请问你说的是编辑器导出的问题还是这个json库的问题?还有注意下是否是在高分辨率下运行然后没添加hd资源。
编辑器缩放导出的资源,用上一个版本的 CCArmature解析 没有问题,用这个只有骨骼图片缩放了,但是骨骼数据没有缩放
这个是在一个属性里换的,并不是把所有数据更新了,属性在 “content_scale”: 0.5,
这个很明显就有BUG,更新之后,以前编辑器缩放导出的资源,变成这个样子了!!我又替换原来的cocostudio 就修复了!
请问CSJsonDictionary去掉了是在哪个引擎版本中?我见2.2里面是有的啊
到目前为止的版本都有的,但是如果换成版主提供的加快解析速度的版本,就没法使用CSJsonDictionary了
你好,缩放是这个版本才提供的,不过看你的问题像是因为高清屏照成的,你需要将该资源在hd目录下复制一份。这个是2.2.0版本开始有的新特色,高分屏需要在hd目录添加资源,要么就会照成这种骨骼大图小的情况
data->autorelease();; 下面还要再加个delete] pBytes; 是不是?
好像不加delete ] pBytes; vld也没报泄露。。
我这边不加就报,老长的一堆数据
哦哦,我看代码也觉得应该是有泄露的。估计我这个vld得换换了= =