2

我在onTouch一个类的构造函数中有一个 TouchEvent 函数,该函数item_Potion在触摸 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 的方式上,这就是我需要帮助的地方。

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

如何在 AS3 中让 MovieClip 自行删除?

4

1 回答 1

2

parentundefined您的示例中,因此错误“一个术语未定义......”。

您可以通过将代码包装在以下内容中来避免错误:

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

但是根据您提供的评论[object global],您可能实际上想要以下内容:

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

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

于 2017-05-16T00:28:10.530 回答