Actionscript 3 如何从数组中删除元素,从stage中删除子元素
因此,我目前正在尝试从阵列“僵尸部落”中删除一个元素,并从舞台上删除子元素。我的目标结果是,一个作为阵列一部分的电影剪辑被随机播放,当播放结束时,帧变为gameover帧。 这是我的代码: 大循环的一部分:Actionscript 3 如何从数组中删除元素,从stage中删除子元素,actionscript-3,Actionscript 3,因此,我目前正在尝试从阵列“僵尸部落”中删除一个元素,并从舞台上删除子元素。我的目标结果是,一个作为阵列一部分的电影剪辑被随机播放,当播放结束时,帧变为gameover帧。 这是我的代码: 大循环的一部分: for each (var zom:Betherino in zombie_horde) { var frame = zom.currentFrame trace(frame) if(frame == zom.lastframe) { updatearray()
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)
}
这就是我目前所拥有的。我想知道我应该如何继续处理这种情况,即从阵列和舞台上删除电影剪辑(作为链接“Betherino”)
抱歉,我对堆栈溢出还是新手:(
我还没有准备好改变画面的部分,任何关于想法的建议都会很好!要“从阵列和舞台上移除元素,然后进入游戏画面”,有三个步骤:
- 从数组中删除该元素
- 从阶段中移除元素
- 跳转到画面上方的游戏
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\u horde.splice()执行此操作
。这不起作用。如果查看,您将看到它需要2个以上的参数:startIndex:int,deleteCount:uint,….values
。也就是说,第一个参数是开始删除的起始索引,第二个参数指定要删除的数量,之后的任何参数都会添加回列表中
zombie_horde.splice(zombie_horde.indexOf(zom), 1);
当内联时,将执行您想要的操作
至于从stage中删除元素,您需要传递一个对象。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框架…并且是随机选择的?嗯?从阵列和舞台上删除元素,然后转到gameover框架。谢谢!但是由于某种原因,在我得到的输出中,ArgumentError#2025:提供的DisplayObject必须是调用方的子对象。@Pita这意味着
zom
不在舞台上。哦,我正试图从舞台上删除betherino的电影剪辑。你做错了太多事情,需要仔细查看文档。好的,对不起,我真的是新手对这个编程的事情。