删除它在舞台上存在的对象的实例

时间:2013-04-22 17:09:20

标签: actionscript-3 object

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

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语句肯定只能运行吗?

2 个答案:

答案 0 :(得分:2)

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

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

如果键入gracetarget(例如MovieClip),则可以执行

if (gracetarget is MovieClip && gracetarget.parent) {
    ...
    }

答案 1 :(得分:0)

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

再次浏览班级代码并检查您正在设置gracetarget / springtarget的位置并跟踪它。还要检查你是否从课堂外设置它的值,并在debuggung

的所有这些位置放置明显的痕迹

如果变量gracetarget或springtarget被设置为null,则实际的动画片段仍然在舞台上,因为gracetarget和springtarget只是指向实际动画片段的指针。

我相信你可以轻松调试这个。祝你好运。