Когда вы делаете removeChild()
, обязательно удалите прослушиватель событий EnterFrame :
function fluryDisplace(e:Event):void
{
e.target.y -= e.target.yspeed;
if (e.target.y <= 0 - e.target.height)
{
e.target.removeEventListener(Event.ENTER_FRAME, fluryDisplace);
var t:DisplayObject = DisplayObject(e.target);
t.parent.removeChild(t);
}
}
В противном случае событие продолжается и включается, но DisplayObject больше не имеет parent
, и, таким образом, t.parent
равно нулю (и вы получите 1009 Error
), которого боятся.
Надеюсь, мои объяснения не были слишком запутанными. Кроме того, я советую внимательно прочитать то, что Маттиас пишет в своем комментарии, и постараться не добавлять больше ОДНОГО прослушивателя EnterFrame, поскольку это очень дорого с точки зрения производительности.