Why can't I remove this Movieclip?

69 views Asked by At

I have a TouchEvent function onTouch inside the constructor function of a item_Potion class that gets run when a Movieclip is touched. This function goes through a series of unrelated checks and then in the end it is supposed to remove itself (the Movieclip).

At the end of the onTouch function it is supposed to remove itself by doing the following:this.parent.removeChild(this);

However, this does not work.

I get the following error message:

TypeError: Error #1010: A term is undefined and has no properties.
    at Function/item_Potion/$construct/onTouch()[E:\Clients\org\tcdsb\ZenithsReach\item_Potion.as:56]
    at runtime::ContentPlayer/simulationSendTouchEvent()
    at runtime::SimulatedContentPlayer/clientSocketDataHandler()

The line it's reffering to for the error message (Line 56) has the following:

this.parent.removeChild(this);

My imports:

`   import flash.display.Stage;
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.display.*;
    import flash.events.TouchEvent;
    import flash.net.dns.AAAARecord;
    import flash.ui.Multitouch;
    import flash.ui.MultitouchInputMode;`

I know the problem is not with the other portions of my code because I have tried switching this line out with visible = false; and I get no errors. Therefore, I am certain that the issue is with the way I am removing the MovieClip, and that is where I need help.

Similiar Sources I have tried that do not work:

How to make a MovieClip remove itself in AS3?

1

There are 1 answers

0
Marty On BEST ANSWER

parent is undefined in your example, hence the error "a term is undefined...".

You can avoid the error by wrapping your code in:

if (parent) {
    parent.removeChild(this);
}

But based on your comment providing [object global] is sounds like you might actually want something like:

event.currentTarget.parent.removeChild(event.currentTarget);

Which would remove the object that the touch event listener was added to.