如何在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
,以便重新启动游戏并添加新游戏。
答案 0 :(得分:1)
有效数组索引范围从0
到length - 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);
希望它会有所帮助。