Egret社区

关于dragonBones的释放问题

2016-9-7 14:19
37674
1银子
我这边加载完资源以后,创建动画代码如下
this.dragonBonesSkeleData = dragonBones.DataParser.parseDragonBonesData(this.skeletonData);
        this.textureAtlas = new dragonBones.EgretTextureAtlas(this.textureData,this.jsonData);
        this.egretFactory = new dragonBones.EgretFactory();
        this.egretFactory.addDragonBonesData(this.dragonBonesSkeleData);
        this.egretFactory.addTextureAtlas(this.textureAtlas);

        var armatureName: string = this.skeletonData.armature[0].name;
        this.armture = this.egretFactory.buildArmature(armatureName);
        this.armtureDisplay = this.armture.display;
        dragonBones.WorldClock.clock.add(this.armture);
        this.addChild(this.armtureDisplay);


释放如下:
this.egretFactory.dispose();
this.textureAtlas.dispose();

this.dragonBonesSkeleData = null;

if(this.armtureDisplay.parent) this.armtureDisplay.parent.removeChild(this.armtureDisplay);
this.armtureDisplay = null;

this.armture.removeEventListener(dragonBones.AnimationEvent.COMPLETE,this.AnimationComp,this);
dragonBones.WorldClock.clock.remove(this.armture);
this.armture.animation.stop();
this.armture.dispose();
this.armture = null;



现在的问题是,升级到3.1.8以后,同样的动画,释放以后再创建就不显示了,把this.textureAtlas.dispose();去掉就好了
3.0.8下就是可以的

哪位帮忙看一下是不是代码有问题
如果不调dispose的话,内存会不会一直占用?因为有些动画不是一直有的,所以用完想释放掉

最佳答案

查看完整内容

释放包含res 的释放 龙骨数据(在factory里)的释放 龙骨armature实例的释放 你的释放是完全正确的,现在龙骨内部会有对象池机制,所以回收后内存可能并不会下降,但是这并不会引起内存问题,因为内存的峰值始终是你需要的值,不比过多的担心,如果还有问题可以再详细了解,这样做的优势是,减小创建实例的开销,同时不会引起过多的垃圾回收 ...
分享到 :
1 人收藏

4 个回复

倒序浏览
duanchunlei  官方团队 | 2016-9-7 14:19:02
xb274271924 发表于 2016-9-8 13:39
谁来指导一下龙骨动画的释放呀~~~还有xCode里面看的内存准不准的?怎么释放了一直都不下来、 ...

释放包含res 的释放
龙骨数据(在factory里)的释放
龙骨armature实例的释放
你的释放是完全正确的,现在龙骨内部会有对象池机制,所以回收后内存可能并不会下降,但是这并不会引起内存问题,因为内存的峰值始终是你需要的值,不比过多的担心,如果还有问题可以再详细了解,这样做的优势是,减小创建实例的开销,同时不会引起过多的垃圾回收

点评

感谢  发表于 2016-9-12 10:31
xb274271924  圆转纯熟 | 2016-9-8 13:39:15
谁来指导一下龙骨动画的释放呀~~~还有xCode里面看的内存准不准的?怎么释放了一直都不下来、
duanchunlei  官方团队 | 2016-9-12 09:37:37
现在的问题是,升级到3.1.8以后,同样的动画,释放以后再创建就不显示了,把this.textureAtlas.dispose();去掉就好了
3.0.8下就是可以的

贴图被释放后,动画当然是不会再显示了,这是正常,以前没释放反倒是错误的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部