您的位置:首页 > 移动开发 > Cocos引擎

cocos2dx 3.x 使用dragonbones 4.5 -- (二)

2017-09-13 16:09 761 查看
这次主要来说说基本结构和内存机制。

当然还是要拿spine来做个比较。spine的运行库,内存管理是完全按照cocos引擎的RC机制来的,用起来和普通的node并无差别。函数原型大概是这样:

SpineNode* create(boneFile,atlasFile,pngFile)


依次传入骨骼文件名、图集json名、图片名,然后就会返回给你一个node,直接就开用了。这样做有几个缺点:

        1、每次都会去读取一次骨骼文件。如果对一个骨骼频繁读取,这个地方可以考虑自己做一个缓存。

但是他也有优点:

        1、atlas那一部分,用的是cocos引擎本身的atlas图集那一部分,好理解好使用好管理。boneFile不管做不做缓存,去读取多少次,这个atlas只有一次,且加入了缓存。

        2、返回的node本身,也是和cocos引擎的内存管理机制吻合,好理解好使用好管理。

dragonbones就不一样了,他引入了一套自己的内存机制去管理boneFile读进来的boneData和atlasFile,增加了理解成本(以致于我粗略看了一遍都还不能具体详细的理解)。用法上也就不一样了,大概使用步骤:

        1、读入boneFile。

        2、读入atlasFile。

        3、构造显示节点。(buildArmatureDisplay)

这样的话,缺点显而易见:

        1、步骤繁琐。这一点,见仁见智,因为spine的缺点也说了,没有对boneFile的管理和缓存,但是我还是觉得他这个很烦。我自己加了缓存的spine库,操作也可以保持和spine一致。

        2、增加理解成本。这个才是最重要的,文档也没有,还要自己去hack代码。

优点也有:

       1、对boneData做了缓存,避免对文件的反复读取,提高效率。

在我去看代码研究他的内存机制的时候,发现了很多不科学的地方,待续。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: