2013-04-04 48 views
1

我有一個Flash遊戲,我正在建立,我有一個陣列跟蹤屏幕上的一堆電源ups。當玩家抓住一個它需要從屏幕上消失(這很容易),但它也需要從陣列中刪除,以便碰撞檢測循環不會變得非常麻煩。我嘗試使用拼接,但我保持空引用錯誤,這裏是相關的代碼。如何有效地垃圾收集在AS3

public function collect():void { 
      try { 
       Main.powerUps.splice(index, 1); 
       stage.removeChild(this); 
      }catch (e:Error) { 
       trace("Error in splice"); 
      } 
     } 
} 

然後,當創建我的上電對象我傳遞給它被分配到作爲加電次數的當時的陣列的長度指標的參數。任何人都可以看到這個代碼有什麼問題,或者(最好)提供更優雅的解決方案?預先感謝您的幫助。

回答

1

優雅的解決方案:一起使用indexOf()splice()

var index:int = Main.powerUps.indexOf(powerup); 
Main.powerUps.splice(index, 1); 

哪裏powerup是存儲在數組Main.powerUps內的對象的引用。

我還創建了一個小的類了一段時間後,可能對你有用:

它有一個.remove()方法,所以你可以這樣做:

powerUps.remove(powerup);