1

我想在单击对象时将其设置为 null 并且我正在尝试实现此代码:

        public function onClick(evt:MouseEvent):void{
        var thisPatient = evt.target;
        thisPatient = null;
    }

但是,该元素仍在舞台上。

4

4 回答 4

4
public function onClick(evt:MouseEvent):void{
    var thisPatient = evt.target;
    (thisPatient as DisplayObject).parent.removeChild(thisPatient);
    //or if thisPatient is this
    parent.removeChild(this);
}

但是让孩子自行移除是不好的做法。更正确的解决方案是厌恶事件,因为父母必须决定移除或不移除孩子。

public function onClick(evt:MouseEvent):void{
    dispatchEvent(new Event("removeMe", true));
}

//parent's code...
child.addEventListener("removeMe", removeHandler);
于 2012-08-13T12:58:36.067 回答
3

将其设置为 null 是不够的。removeElement()您还必须使用或removeChild()根据您使用的容器类型将其从其父容器中删除。

于 2012-08-13T12:51:06.627 回答
2

你只需要做removeChild(thisPatient),如果你把对象放在另一个对象中,你必须做parent.removeChild(thisPatient)

于 2012-08-13T12:51:40.870 回答
1

根据我的经验,注册一个事件对象,您必须删除所有事件。所有事件将被完全手动删除。对象上的 removeChild 不会释放所有事件。removeChild 但是,会发生内存泄漏。这是因为您没有删除该事件。在移除对象之前,您必须移除事件。

于 2012-08-13T14:18:22.500 回答