所以我目前正在尝试从数组中删除一个元素' 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')而且还可以解决这个问题
抱歉,我仍然是新的堆栈溢出:( 我没有接受改变框架部分任何关于想法的建议都会很棒!
答案 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框架”评论仍然需要用相关代码替换。