开发者

ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller error - AS

I have this code snippet inside a function that checks if an object exists on stage and removes it:

public function closeContent(e:MouseEvent):void { 
    removeChild(txt);
    removeChild(ldr.content);
    removeChild(_closeButton);
    container_mc.visible = false;
    statusText.text="";
    if (contains(submitButton)) {
        removeChild(submitButton);
    }
    if (contains(saveinfoButton)) {
        removeChild(saveinfoButton);
    }
}

I tried to change stage with this and root but alw开发者_StackOverfloways get this error ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller


The error signals that you are trying to remove a DisplayObject with removeChild that apparently is not a child of the DisplayObjectContainer this code is executed from.

One way to solve this problem is to check if the object you are trying to remove is actually a child of the container using contains. You are doing this for some of the objects you are removing (submitButton and saveinfoButton), but not for some others.

Try wrapping the removeChild calls for txt, ldr.content and _closeButton in if statements that use contains to check whether these DisplayObjects are in the container.


Try with:

e.currentTarget.parent.removeChild(txt);  
e.currentTarget.parent.removeChild(ldr.content)  
etc.


Try this:

public function closeContent(e:MouseEvent):void { 
    removeChild(txt);
    removeChild(ldr.content);
    removeChild(_closeButton);
    container_mc.visible = false;
    statusText.text="";
    if (contains(submitButton)) {
        removeChild(submitButton);
        removeChild(saveinfoButton);
    }
}

You may be able to add both items for removal in the conditional with &&:

    if (contains(submitButton && saveinfoButton)) {
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜