ActionScrip3正确删除对象

时间:2013-11-19 00:54:39

标签: actionscript-3 garbage-collection

我正在使用ActionScript 3开发一个相当基本的“shootem up”游戏。这是我第一次在AS3中编程,而且它正在顺利进行。但是,我有一个问题就是不断重置它的头部,这是在移除它们之后尝试执行操作的对象,或者在移除它们的父项之后,它会抛出一个空对象引用,因为它们的父项不再存在。

我想我只是在如何处理垃圾收集方面犯了一个根本性的错误。什么是“正常”的方式:

1)从舞台上移除一个物体,例如当敌人死亡时,如何以不会导致空物品引用的方式安全地移除它?

2)清除并删除包含许多子对象的对象,例如包含所有其他游戏对象的ShooterGame对象,例如玩家船,UI,敌人,射弹等等?

我知道有一个我尝试使用的removeChild函数,但它似乎导致了比修复更多的问题。我需要使用其他方法来清理未使用的对象吗?

我不是在这里发布代码,因为,说实话,我甚至不知道哪些部分我做错了,而且我不想垃圾邮件大量的代码,这些代码可能无关紧要。如果您需要查看特定部分,请告诉我,我会尽力提供。

提前感谢您的帮助,如果这有点模糊,请抱歉。

1 个答案:

答案 0 :(得分:0)

如果要销毁对象,请确保:

  • 如果它是DisplayObject
  • ,则将其从显示列表中删除
  • 从中删除所有侦听器
  • 删除对象的所有引用 - 将其从存储在
  • 中的所有数组中删除
  • 删除使用该对象的所有间隔。
  • 将对象设置为空

只有这样才能收集垃圾。

此外,由于你正在制作一个射击游戏,所以有必要事先创建所有对象并停用对象而不是销毁它们并制作新对象。它被称为对象池,请看一下。它应该提高性能并允许游戏在移动设备上运行。