为什么我不能删除这个 Movieclip?

Why can't I remove this Movieclip?

我在 item_Potion class 的构造函数中有一个 TouchEvent 函数 onTouch,它在触摸 Movieclip 时得到 运行。这个函数经过一系列不相关的检查,然后最后它应该删除自己(Movieclip)。

在 onTouch 函数结束时,它应该通过执行以下操作自行删除:this.parent.removeChild(this);

然而,这不起作用。

我收到以下错误消息:

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()

它引用的错误消息行(第 56 行)如下:

this.parent.removeChild(this);

我的导入:

`   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;`

我知道问题不在于我的代码的其他部分,因为我已经尝试用 visible = false; 切换这一行并且我没有收到任何错误。因此,我确定问题出在我删除 MovieClip 的方式上,这正是我需要帮助的地方。

我试过的类似来源不起作用:

How to make a MovieClip remove itself in AS3?

parent 在您的示例中是 undefined,因此错误 "a term is undefined...".

您可以通过将代码包装在以下位置来避免错误:

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

但根据您提供的评论,[object global] 听起来您可能真的想要这样的东西:

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

这将删除添加了触摸事件侦听器的对象。