[LayaAir 2.0]Skeleton动画销毁内存泄漏

之前在论坛里面提过Sk动画销毁的问题,我大致复盘一下。
版本A:
1. new sk();sk.load("xx.sk",handler());
2.销毁直接使用sk.destroy();sk=null;
这时在chorme上就能看到有内存泄漏,会多出来一个templet类型的数据,和官方大佬沟通之后产生了版本B。
版本B:1.new templet();templet.loadani("xx.sk" handler(new sk()=templet.buid()));
2.销毁使用 sk.destroy();templet.destroy();
这时内存泄漏的问题解决了,但是产生了新的问题,官方应该是将templet做了个复用的处理,如果两个对象用一个“xx.sk”文件,加载完成之后应该是将之前同样key的“Templet”拿来直接用,那么销毁templet的时候另一个不是我想销毁的sk会丢失纹理资源。
版本C:
1.用版本A的第一步创建;
2.在查看了源码之后看到sk内部有templet对象,后面做了一系列试验,证明templet是复用的,所以在销毁的时候根据引用计数去做templet的销毁,sk销毁还是按照官方提供的接口来的;
至此内存的问题解决了,最后是另外一个问题,“xxx.sk”文件在sk.load()的时候偶尔会解析失败(同一个文件),我查看了资源,确实是有,然后又是好几天的断点,日志,发现sk内部templet在加载loadlist的时候偶尔会加载“xxx.png”失败,抛出error事件。
版本D:
1.先加载“xxx.png”文件,然后执行版本A的第1步;
2.版本C的第2部;
大概一天的测试时间没有发现sk文件解析失败的问题,以上是我对skeleton动画的修改,提供给大家参考,如果大佬们有好的解决方法@我一下
已邀请:

要回复问题请先

商务合作
商务合作