Flash ActionScript 3.0在转到下一帧后删除阵列/冷却

Flash ActionScript 3.0在转到下一帧后删除阵列/冷却,flash,actionscript-3,adobe,Flash,Actionscript 3,Adobe,我所拥有的是: var ster:Array; ster = new Array(); stage.addEventListener(Event.ENTER_FRAME, groente); function groente(event:Event) { if(Math.round(Math.random()*140) == 1) { ster.push(new groente1_MC()); addChild(ster[ste

我所拥有的是:

var ster:Array;
ster = new Array();

stage.addEventListener(Event.ENTER_FRAME, groente);

function groente(event:Event)
{
    if(Math.round(Math.random()*140) == 1)
    {
            ster.push(new groente1_MC());
            addChild(ster[ster.length-1]);
            ster[ster.length-1].x = machine.x
            ster[ster.length-1].y = machine.y 
            ster[ster.length-1].scaleX = 0.2;
            ster[ster.length-1].scaleY = 0.2;
    }
    for(var i:int = 0; i < ster.length-1; i++)
    {
            ster[i].y = ster[i].y + 5;
            if( hero.hitTestObject(ster[i]) ) {
                ster[i].visible = false;
                score = score +1;
                Score.text = ""+ score;

            }
    }
}   
var-ster:Array;
ster=新数组();
stage.addEventListener(Event.ENTER_FRAME,groente);
功能groente(事件:事件)
{
if(Math.round(Math.random()*140)==1)
{
ster.push(新groente1_MC());
addChild(ster[ster.length-1]);
ster[ster.length-1].x=machine.x
ster[ster.length-1].y=machine.y
ster[ster.length-1].scaleX=0.2;
ster[ster.length-1].scaleY=0.2;
}
对于(变量i:int=0;i
现在的问题是,在进入下一帧之后。我仍然可以看到groente1_MC。在我的舞台上还有更多的产卵。如何在转到下一帧后删除所有这些并停止生成它们?

试试看

for(var i:int = ster.length -1; i >= 0; i--)
{
        ster[i].y = ster[i].y + 5;
        if( hero.hitTestObject(ster[i]) ) {
            ster[i].visible = false;
            score = score +1;
            Score.text = ""+ score;
            removeChild(ster[i]);
            ster.splice(i, 1);
        }
}
例如:

            var ar:Array = [0,1,2,3,4,5,6,7,8,9,10]
            for(var i:int = ar.length - 1; i >= 0; i--){
                if(i % 2 == 0){                        
                    tf.text +=  i + ' : ' + ar[i] + '\n';                    
                    ar.splice(i,1);
                }
            }
            tf.text += 'so : ' + ar.join(', ');
tf.text

10:10
8:8
6:6
4:4
2:2
0:0 所以:1,3,5,7,9


您需要删除ENTER_FRAME listener以停止对象的移动和创建,然后在清除阵列之前在阵列中循环删除舞台上的每个对象:

function clearStage():void
{
    stage.removeEventListener(Event.ENTER_FRAME, groente);
    for each(var mc:groente1_MC in ster) {
        removeChild(mc);
    }
    ster = [];
}

你能澄清一下吗?这是目前每帧移动你的groente1_MC实例,偶尔创建新实例。当你说你要进入下一帧时,你是指你的游戏的下一个屏幕吗?当你输掉游戏时。我也有一个其他对象的这条线,但是,在5次点击之后。您将返回主屏幕再次“播放”。不幸的是,当回到这个框架。我仍然看到这些对象(这段代码在Frame3中,我将回到Frame1)只是一个问题:它是否每次都在循环开始时重新计算ster.length?splice会改变ster的长度吗?这个循环会做一些古怪的事情吗?我只记得我曾经在Java中有过一些类似的东西,但它可能是一个for-each循环对不起,缺少了一个空格。对于每个