【问题标题】:release used resources in createjs在 createjs 中释放使用的资源
【发布时间】:2017-03-24 05:16:20
【问题描述】:
我有一个Container,在Stage 上显示了多个Sprite 和MovieClip 对象,其中所有精灵都使用3MB png SpriteSheet。
在某些时候,我加载了另一个 SpriteSheet 以显示另一个使用它的 Container。
在反复试验的过程中,我发现设置Container 的visible 属性是不够的,所以我使用了removeChild() 和cache(),这两者都有助于获得适当的帧速率。
问题是当我加载更多容器和精灵表时,帧率偶尔会变得非常低。
为了释放使用的资源,我还应该采取什么其他步骤吗?
常见的陷阱有哪些?
【问题讨论】:
标签:
html
html5-canvas
createjs
easeljs
【解决方案1】:
是的,当我第一次开始在 createJS 中创建应用程序时,我自己也遇到了很多性能问题。
如果您的帧速率低于应有的值,请确保缓存不是从 位图 创建的每个对象,因为这些对象不会不断刷新并且不会消耗性能。例如,Shape 类型的对象会不断刷新,并且非常消耗性能。
您应该对没有动画内容的对象使用以下模式:
var bounds = displayObject.nominalBounds;
displayObject.cache(bounds.x, bounds.y, bounds.width, bounds.height);
这将缓存对象并使其几乎不消耗性能。
此外,当需要摆脱它时,请确保使用以下方式释放资产:
//if it was added as a child of a container
displayObject.parent.removeChild(displayObject);
//if it was cached prior
displayObject.uncache();
//when you don't need it anymore, for garbage collection
displayObject = null;