Actionscript 提供的DisplayObject必须是调用方的子对象

Actionscript 提供的DisplayObject必须是调用方的子对象,actionscript,removechild,Actionscript,Removechild,是的,我知道这个问题总是被问到,但我的经验不足使我无法找到答案。我只是想在点击按钮时从屏幕上删除一个对象- public function but1click(evtObj:MouseEvent) { trace("button one clicked"); if (gracestate == "grace") { removeChild(grace); trace("grace remove

是的,我知道这个问题总是被问到,但我的经验不足使我无法找到答案。我只是想在点击按钮时从屏幕上删除一个对象-

    public function but1click(evtObj:MouseEvent)
    {
        trace("button one clicked");
        if (gracestate == "grace")
        {
            removeChild(grace);
        trace("grace removed");
                }
    }

我跟踪了对象的父对象(grace),结果返回为null。这让我快发疯了,非常感谢您的帮助

问题还不清楚,但最可能的问题似乎是您正在将一个值存储到grace中,而该值正在被垃圾收集/删除

如果在函数内部创建变量,但函数外部不存在对该变量的引用,则该变量将被GC。基本上,任何没有被其他内容引用的内容都会被删除,唯一不适用的对象是时间线。这将阻止闪存播放器滞后,并避免RAM满时出现错误。因此:

    function createGrace () {
      var grace = new Object();
      addChild(grace);
    }
    trace (grace); // returns null

    var grace:Object;
    function createGrace () {
      grace = new Object();
      addChild(grace);
    }
    trace (grace); // returns [Object]