在时间轴中删除movieclip - 真的没了?

时间:2013-04-06 00:13:06

标签: actionscript-3

当一个物体撞击另一个物体时,我想要爆炸。我这样做,以便当hitTestObject为true时,我运行此函数

function createExplosion():void {
var explosion:Explosion = new Explosion(enemy.x, enemy.y);
this.parent.addChild(explosion);
}

爆炸类只包括将输入设置为x和y值。然后在爆炸movieclip我有几帧动画。它以关键帧结束(即,作为该帧中的动作),具有以下代码:

stop();
this.parent.removeChild(this);

我的问题是。它现在真的消失了吗?我不得不添加stop()以获取错误1009.这让我怀疑某些事件计时器仍然在运行?

1 个答案:

答案 0 :(得分:0)

从显示列表中删除显示对象,不会停止动画或将其从内存中删除。它只是将其从显示列表中删除。是的,您需要停止动画并删除可能对该对象有效的任何事件侦听器。

在收集垃圾之前,显示对象永远不会真正消失。但是,除非没有对该对象的引用,否则不会发生这种情况。因此,如果您有一个名为explosion的变量引用您的显示对象,则需要在将其从显示列表中删除后将其设置为null:

explosion.stop();   // stop the animation
removeChild(explosion);  // remove from display list
explosion = null; // remove variable reference
// explosion now qualifies for garbage collection.

请记住,这不会立即从内存中删除对象,它只是让它成为垃圾收集器的公平游戏。您可以谷歌“AS3垃圾收集”以获取有关该过程的更多信息。