如何在actionscript中删除数组中的子节点

时间:2013-11-22 06:03:26

标签: arrays actionscript-3 removechild

如何在ActionScript 3.0中删除数组中的子项? 这是我的代码。我将要删除的子项放在名为nailList[]的数组中,并将其放在gameStage上。

function makeNails():void
{   
    for (var i=0; i< 3; i++)
    {
        for (var j=0; j<3; j++)
        {
            var tempNail = new Nail2(j * C.NAIL_DISTANCE + C.NAIL_START_X,
            i * C.NAIL_DISTANCE + C.NAIL_START_Y);

            nailList.push(tempNail);
            gameStage.addChild(tempNail);
        }
    }
    gameStage.addEventListener(Event.ENTER_FRAME,update);
    gameStage.addEventListener(MouseEvent.CLICK, clickToHit);
}

这是我用来去除指甲的代码。但是这段代码后没有任何反应。指甲还在那里。

for (var j:int = nailList.length; j >= 0; j--)
{   
    removeNails(j);
    trace("Remove Nail");
}
function removeNails(idx:int)
{
    gameStage.removeChild(nailList[idx]);
    nailList.splice(idx,0);
}

我想删除MovieClip,以便重新启动游戏并添加新游戏。

2 个答案:

答案 0 :(得分:1)

有效数组索引范围从0length - 1。您尝试使用无效的removeChild来呼叫nailList[nailList.length]removeChild应该触发错误。您需要将j的初始值更改为nailList.length - 1

for (var j:int = nailList.length - 1; j >= 0; j--)
                                 ^^^  

另一个问题是(如评论中所指出的)splice的第二个参数是删除计数。所以你需要使用1而不是0。

nailList.splice(idx, 1);
                     ^

答案 1 :(得分:0)

您可以使用splice删除数组的子项。

arrName.splice(2,1);

希望它会有所帮助。