代码之家  ›  专栏  ›  技术社区  ›  willa_012

如何移除movieclip中的孩子

  •  1
  • willa_012  · 技术社区  · 7 年前

    我在舞台上有一个名为scenePage的MovieClip,和一个名为char_panel的MovieClip,它由角色MCs组成。其中之一是char1_mc。

    当我单击char1\u mc时,这将创建一个新实例(newChar),在scenePage中添加一个子实例。我在stage上还有一个名为btn_remove的按钮,单击该按钮时应该会删除scenePage上的newChar。问题是,当我单击按钮时,scenePage中的子元素(newChar)没有删除。

    scenePage.removeChild(newChar);
    

    但它给了我一个错误:“参数child必须非null。”是否有其他方法可以访问scenePage内的实例?我真的需要访问scenePage上的孩子。

    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 回复  |  直到 7 年前
        1
  •  0
  •   BadFeelingAboutThis    7 年前

    你的问题是 范围

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

    newChar 从主时间线开始,您必须深入到适当的范围。

    char_面板 是主时间线上对象的实例名称。如果是这样,您必须在主时间线代码上执行此操作:

    scenePage.removeChild(char_panel.newChar);
    

    也就是说“移除 新字符 对象,该对象是 char_面板