在createjs中释放使用过的资源

时间:2016-11-10 08:39:25

标签: html5 html5-canvas createjs easeljs

我有一个ContainerStage上显示多个SpriteMovieClip个对象,其中所有精灵都使用3MB png SpriteSheet
在某些时候,我会加载另一个SpriteSheet以显示使用它的其他Container 在试错过程中,我发现设置visible的{​​{1}}属性不够,所以我使用removeChild(),还{{}} Container 3}},这两者都有助于正确的帧率 问题是,当我加载更多的容器和spritesheets时,帧率有时会变得非常低 我是否应该采取其他措施来释放使用过的资源? 有哪些常见的陷阱?

1 个答案:

答案 0 :(得分: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;