在我的文档类中,我有这个代码
_gameWorld = new GameWorld();
addChild(_gameWorld);
GameWorld 有一个很大的构造函数来创建关卡、玩家、武器等。
我的印象是,如果我当时这样做
removeChild(_gameWorld);
_gameWorld = null;
因为 GameWorld 对象现在无法访问,因此关卡、玩家和其中引用的所有其他内容也是如此,因此整个事物都将被垃圾回收。情况似乎并非如此。相反,我发现旧游戏世界的元素仍在尝试发挥作用。
我想知道是否可能是因为其中一些元素中有事件监听器,监听其他元素,“this”或有时是“stage”。我尝试将它们设置为弱引用,但没有帮助,我的理解是,例如持有对舞台的引用的事件侦听器不应该阻止该对象被垃圾收集。
对于调试,我希望能够非常快速地重新启动整个游戏,所以我希望它会像
removeChild(_gameWorld);
_gameWorld = null;
_gameWorld = new GameWorld();
addChild(_gameWorld);
而不是必须以某种方式精心拆卸整个东西。有人可以指出我正确的方向吗?