如何在不出错的情况下删除子项Child必须为非null

时间:2014-01-26 11:38:02

标签: actionscript-3 removechild

我遇到了一个我无法弄清楚的问题。

我已经进入了我的引擎类(engine.as):

public static var viseur:Viseur;

var lookCocoDessous:Boolean = thisBack == "cocotierDessous";
if (lookCocoDessous) {
     viseur = new Viseur(stage);
    stage.addChild(viseur);
    viseur.visible = true;
    souris.visible = false;
    puzzle.addListeners();

}

在我的拼图课(Puzzle.as)中:

public static var viseur:Viseur;

当调用函数“backToJardin”时,我想删除“viseur”(已在Engine.as中调用)。 所以我写了这个:

public function backToJardin(thisBack:String):void{

    Engine.viseur.stage.removeChild(viseur);
        Engine.newBack = "jardin";
    stageRef.dispatchEvent(new Event("changeBackground"));

    }

但我有这个错误:

TypeError:错误#2007:参数child必须为非null。     在flash.display :: DisplayObjectContainer / removeChild()     在com.laserdragonuniversity.alpaca :: Puzzle / backToJardin()

你知道为什么吗?我该如何解决?

当我在Puzzle.as中调用该函数时,我想删除COMPLETELY“viseur”(它永远不会被再次调用,所以我想“破坏”它)

感谢您的帮助,


修改

我试着把

Engine.removeViseur();

在我的backToJardin函数中

并放

public function removeViseur(){ stage.removeChild(viseur);}

在我的Engine类中,但是我遇到了这个错误:错误1061 removeViseur无法通过静态类型的引用定义

(在我的Engine.as类中也是如此):

public function removeViseur(){
            if (Engine.viseur && Engine.viseur.parent)
 {
       Engine.viseur.parent.removeChild(viseur);
        }
    }

1 个答案:

答案 0 :(得分:1)

如果你想在引擎中删除viseur,试试这个

  if (Engine.viseur && Engine.viseur.parent)
 {
       Engine.viseur.parent.removeChild(viseur);
  }

或者将此代码放在Engine中的函数中,并在backToJardin中调用该函数。

修改

引擎中的功能应该是静态的。

public static function removeViseur()
{

    if (viseur && viseur.parent)
    {
        viseur.parent.removeChild(viseur);
    }
 }