我在舞台上有一个名为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);
}
提前致谢:)
答案 0 :(得分:0)
您的问题是范围之一。
主时间轴和char_panel
具有不同的范围。这意味着一个中的变量在另一个中不可用。
要从主时间轴到达newChar
,您必须深入到适当的范围。
假设char_panel
是主时间轴上对象的实例名称。如果是这样,您必须在主时间轴代码上执行此操作:
scenePage.removeChild(char_panel.newChar);
正在说"删除属于newChar
范围的char_panel
对象"