如何从舞台中删除Array和child中的元素

时间:2014-10-21 02:10:48

标签: actionscript-3

所以我目前正在尝试从数组中删除一个元素' zombie_horde'以及将孩子从舞台上移走。我的目标结果是作为阵列一部分的影片剪辑随机播放,并且当完成播放时,帧变为游戏帧。 这是我的代码:

大循环的一部分:

for each (var zom:Betherino in zombie_horde)

{
var frame = zom.currentFrame
trace(frame)
if(frame == zom.lastframe)
    {
        updatearray()
    }
    else{
    zom.gotoAndStop(frame+1)
    }

功能:

function updatearray()
{

zombie_horde.splice();

trace('spliced')
}


function removeBetherino()
{

stage.removeChild(Betherino)
}

这是我到目前为止所拥有的。我想知道我应该如何继续解决这种情况,不仅可以从阵列中移除影片剪辑(AS Linkage' Betherino')而且还可以解决这个问题

抱歉,我仍然是新的堆栈溢出:( 我没有接受改变框架部分任何关于想法的建议都会很棒!

1 个答案:

答案 0 :(得分:3)

要“从阵列和舞台中删除元素然后转到游戏框架”,有三个步骤:

  • 从数组中删除元素
  • 从舞台
  • 中删除元素
  • 跳过框架游戏。

最后一个,我认为最好留给你。你的问题中没有与gameover框架相关的代码,所以我无法帮助你。

其他元素,但是......

for each (var zom:Betherino in zombie_horde){
    var frame = zom.currentFrame
    trace(frame)
    if(frame == zom.lastframe)
    {
        updatearray()
    }
    else{
        zom.gotoAndStop(frame+1)
    }
}

你经历了僵尸部落中的每个僵尸,如果它在最后一帧,你会尝试删除它。

这意味着这些僵尸只是通过动画播放然后消失。听起来很奇怪。这真的是你想要代码吗?

接下来......您使用updatearray从阵列中删除僵尸。但是你是通过zombie_horde.splice()这样做的。这不起作用。如果您查看documentation for splice,那么您会看到它需要2个以上的参数:startIndex:int, deleteCount:uint, ... values。也就是说,第一个参数是开始删除的开始索引,第二个参数指定要删除的数量,之后的任何参数都会添加回列表中。

zombie_horde.splice(zombie_horde.indexOf(zom), 1);
内联后,

会做你想要的。

至于从舞台中删除元素,您需要传递一个对象。 stage.removeChild(Betherino)不是正确的方式,内联并使用stage.removeChild(zom)。这就是这个功能:

for each (var zom:Betherino in zombie_horde){
    var frame = zom.currentFrame
    trace(frame)
    if(frame == zom.lastframe)
    {
        zombie_horde.splice(zombie_horde.indexOf(zom), 1);
        stage.removeChild(zom);
        //go to gameover frame and exit for loop
    }
    else{
        zom.gotoAndStop(frame+1)
    }
}

“转到gameover框架”评论仍然需要用相关代码替换。