Phaser .js内存泄漏。如何在Phaser Canvas应用程序中正确释放对象?

时间:2018-05-12 00:09:07

标签: javascript html5 phaser-framework

我们有一款运行Phaser .JS的游戏。 Whilie使用浏览器,似乎内存不断增长。

清洁物体的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

我会缩小我的答案,使其可用。

Phaser 2声称大多数对象可以通过为其引用分配null来简单地解除引用,并且应该触发垃圾回收。

而其他人,比如TilemapLayers,将明确需要特定的调用它们的析构函数。

可以选择销毁像Particle这样的其他人(例如Particle.kill())。

然而,正如您所知,自动垃圾收集器并不总是好的,特别是如果您长时间打开浏览器,它会泄漏内存。

所以你应该杀死,停止,删除和摧毁一切,甚至是可选对象。即使您没有找到特定的析构函数,大多数对象仍继承自PIXI.DisplayObject,因此实现.RemoveChild和变体。特别是父Phaser.Stage

转到此处:https://phaser.io/learn/chains

搜索以下内容:destroy removeAll .stage.remove(和remove及其所有前缀和后缀,包括removeChild和variants)stop kill

如果您没有找到特定的析构函数,请记住PIXI.DisplayObject继承和removeChild / ren。

还记得在退出时调用Stage.removeStageReference()

我希望有帮助

答案 1 :(得分:0)

在 Phaser 3(我不知道 Phaser2)中,移除子游戏对象是不够的。除非你也调用它的destroy()方法,否则它会消耗内存。