如何删除movieclip中的子项

时间:2017-09-21 13:02:26

标签: actionscript-3 flash

我在舞台上有一个名为scenePage的MovieClip,以及一个名为char_panel的MovieClip,它由字符MC组成。其中一个是char1_mc。

当我点击char1_mc时,这会创建一个新实例(newChar),在scenePage中添加一个子节点。我在舞台上还有一个名为btn_remove的按钮,它应该在单击时删除scenePage上的newChar。问题是,当我单击按钮时,scenePage中的子(newChar)没有删除。

我尝试使用

scenePage.removeChild(newChar);

但它给了我一个错误,说“参数child必须为非null”。有没有其他方法来访问scenePage中的实例?我真的需要在scenePage上访问孩子。

这是char_panel里面char1_mc的脚本,在我为AS3导出之后,character1是char1_mc的类名:

import flash.display.MovieClip;

var newChar: MovieClip;

char1_mc.addEventListener(MouseEvent.CLICK, showChar1);
function showChar1(e:MouseEvent):void
{
    newChar = new character1();
    newChar.height = 215;
    newChar.width = 220;
    newChar.x = 20;
    newChar.y = 202.60;
    MovieClip(root).scenePage.addChild(newChar);
}

这是btn_remove的脚本,它位于主时间轴中。

btn_remove.addEventListener(MouseEvent.CLICK, remove_character);
function remove_character(e:MouseEvent):void
{
    scenePage.removeChild(newChar);
}

提前致谢:)

1 个答案:

答案 0 :(得分:0)

您的问题是范围之一。

主时间轴和char_panel具有不同的范围。这意味着一个中的变量在另一个中不可用。

要从主时间轴到达newChar,您必须深入到适当的范围。

假设char_panel是主时间轴上对象的实例名称。如果是这样,您必须在主时间轴代码上执行此操作:

scenePage.removeChild(char_panel.newChar);

正在说"删除属于newChar范围的char_panel对象"