在AS3中删除子项

时间:2013-01-21 10:58:56

标签: actionscript-3

我的Flash游戏存在多个帧的时间轴(我知道我应该避开时间轴) 游戏的重点是点击式冒险。当您进入和离开房间时,您能够获取的对象会相应地生成并销毁。现在我的问题是当进入第14帧(来自第12帧的accessibel)时,它会创建一张纸,如果你有另一个项目,你可以拿起它。现在我的问题是,当你不能或不拿起纸张并返回到第12帧(仅退出到第12帧)时,你不能点击任何其他物体而你基本上卡在第12帧上。当离开和进入其他房间时,它工作正常,但由于某种原因,它不适用于第14帧的纸张。

我删除对象的代码如下:

在我的Main.as Documentclass中,我有一个在游戏开始后立即调用的函数,该函数执行以下操作

if (lastframe == 14)
{
    trace (prop.numChildren);
    while (prop.numChildren )
    {
        prop.removeChildAt(0);
    }
}

从帧移动时建立lastframe变量 这个函数可以在框架本身找到(每个出口函数都在它自己的框架上)

function exitKantine(event:MouseEvent):void
{
    Main.lastframe = 14;
    gotoAndStop(12);
}

删除道具的功能实际上会删除它,但会导致所有其他可点击的对象无法使用。

感谢您查看我的问题,并提前感谢您的建议

1 个答案:

答案 0 :(得分:0)

我会说,不是删除子项,而是在开头添加一次,在开头添加所有侦听器,并切换可见性,而不是每次要隐藏它时尝试addChild和removeChild。使用数组,这样您就可以同时进行一些操作。

类似的东西:

private function init():void

{

assignVars();
addListeners();

  stage.addChild   // make sure this is in document class or you are passing stage to the class using it


}


for (var i = 0; i < _thingsAry.length; i++)
{

if (_thingsAry[i] == 14)
{
    _thingsAry[i].visible = false;
    trace("the visibility of _thingsAry[" + i + "] is " + _thingsAry[i].visible
}
}