我有一个对象数组,当另一个对象击中其中一个对象时,该对象将被删除。我已经使用 removeChild() 将它从舞台上移除,并使用 splice() 从数组中移除,但不知何故该对象仍在调用它的一些函数,这导致了错误。我如何完全摆脱一个对象?也没有绑定(bind)到它的事件监听器。
最佳答案
您需要确保要删除的显示对象:
- 舞台上没有注册的听众,例如您需要为任何相应的
stage.addEventListener(...)
调用 - 没有
Event.ENTER_FRAME
事件的监听器 - 不监听任何定时器的事件
- 不会被在任何地方用
setInterval
设置的定时器调用 - 等基本上与计时器、舞台、它的父级、加载器和时间线有关的任何事情都可能导致对象逗留而不被删除
stage.removeEventListener(...)
因此,当您使用 removeChild
删除对象并将其从您保存它的数组中删除时,还要调用其 stop
方法以确保它不会播放其时间轴.在该对象上有一个名为 halt
、cleanup
或 finalize
的方法也可能是一件好事,它可以注销任何监听器、停止计时器、超时、间隔等,清除对其父级、舞台或任何不会消失的对象的引用(即将变量设置为 null
)。
关于flash - Actionscript 3 - 完全移除一个 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69016/