我遇到了一个我无法弄清楚的问题。
我已经进入了我的引擎类(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);
}
}
答案 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);
}
}