0

我正在尝试检查屏幕上是否存在对象的实例,如果存在 - 将其删除。代码如下 -

if (gracetarget.parent)
{
 gracetarget.removeEventListener(Event.ENTER_FRAME, gracetarget.graceListener);
 gracetarget.parent.removeChild(gracetarget);
}
else if (springtarget.parent)
{
 springtarget.removeEventListener(Event.ENTER_FRAME, springtarget.springListener);
 springtarget.parent.removeChild(springtarget);
}

我收到以下错误 - TypeError:错误 #1009:无法访问空对象引用的属性或方法。

我想这是因为我试图删除一个不存在的对象,但肯定 IF 语句应该只在对象存在时运行?

4

2 回答 2

2

首先测试您要删除的对象是否不为空。

if (gracetarget != null && gracetarget.parent) {
...
}

如果键入了gracetarget(例如MovieClip),您可以这样做

if (gracetarget is MovieClip && gracetarget.parent) {
    ...
    }
于 2013-04-22T17:16:04.573 回答
0

Gracetarget/springtarget 没有从阶段中删除的原因是因为您在代码中的其他地方将其设置为 null。您在代码中的某处丢失了这些变量。

再次检查你的类的代码,检查你在哪些地方设置了gracetarget/springtarget并跟踪它。还要检查您是否从类外部设置它的值,并在所有此类位置放置不同的跟踪以进行调试

如果将变量gracetarget 或springtarget 设置为null,则实际的movieclip 将保留在舞台上,因为gracetarget 和springtarget 只是指向实际movieclip 的指针。

我相信你可以很容易地调试这个。祝你好运。

于 2013-04-23T16:18:43.313 回答