一般的看法是当你从舞台上移除一个组件时,你还需要手动移除所有的孩子,这样他们就不会在内存中浮动。因为父容器已被移除,所以它们不可见。移除元素/子元素是否也移除作为皮肤一部分创建的元素?
举例来说,这将是BorderContainer
中的Label
组件。我的理解是你需要先删除Label
然后再删除BorderContainer
。
当您创建组件(如TitleWindow
)时,它的默认外观将closeButton
添加到标题栏/标题。
我添加了一个事件监听器到关闭按钮。 TitleWindow.closeButton.addEventListener();
在关闭按钮事件调用的函数中,我想关闭/删除窗口。
我的问题是这样的。我是否需要手动删除closeButton
作为TitleWindow
的子项?或者我只是删除听众,然后从舞台上删除TitleWindow
和皮肤创建的组件自动删除/垃圾收集?
下面的答案解释了从显示树中为通用情况(不包括下面的皮肤信息)中删除父项意味着所有子项都不再与所有连接/使用的对象的图形关联(它将是一个孤立的图)这意味着他们有资格收藏。如果存在任何边缘/引用(事件监听器或简单对象引用)将其绑定到活动对象的图形上,则不会收集它(因为它可能稍后被访问,这可能导致空对象引用)。 – shaunhusain