2011-11-10 70 views
0

我有什麼這樣的:ActionScript 3.0中刪除陣列/ chillds將下一幀後

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; 

      } 
    } 
} 

現在的問題是,要到下一幀之後。我仍然可以看到groente1_MC。我的舞臺上還有更多的產卵。我如何刪除所有這些,並停止產卵後去下一幀?

+0

你能澄清一些 - 這目前每幀都會移動groente1_MC的實例,並且偶爾會創建新的實例。當你說你要進入下一個畫面時,你的意思是你遊戲的下一個畫面? – shanethehat

+0

當你放鬆遊戲。我也有另一個對象的這一行,但是在5次點擊之後。您將返回主屏幕以再次「播放」它。不幸的是,當回到這個框架。我仍然看到這些對象(此代碼在Frame3中,而我將返回到Frame1) – PlayerX

回答

2

您需要刪除ENTER_FRAME監聽器停止物體的運動和創作,然後循環雖然陣列清除陣列之前除去舞臺的每個對象:

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

我得到一個語法錯誤,'Foreach(var mc ....)line – PlayerX

+0

對不起,有一個空間不足。它應該是'爲每個' – shanethehat

1

嘗試

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
so:1,3,5,7,9

+0

只是有關於此的一個問題:它是否每次都在循環的開始處重新評估ster.length?不ster.splice更改ster的長度和循環會做時髦的事情?我只記得我在Java中有一些類似的東西,但它可能是每個循環的 – Mike

+0

你是對的,更新我的答案 – www0z0k