我在removeChild上看到了很多問題。as3 removeChild方法在遊戲中給出問題
我有一個入侵者類型的遊戲,磚塊從頂部落下,你必須用一個彈起的球來摧毀它們。
當我想刪除磚塊(在for循環中引用它的數組)時,我隨機得到異常錯誤(與許多其他錯誤一樣),以致該對象必須是調用者的子項。
這是一個解決方案:
if (this.parent != null)
{
this.parent.removeChild(this);
}
- 這是在我的情況下,從類的目標對象(磚)的內調用。
但事情是..如果this.parent真的是空的 磚只是呆在那裏! (當它應該被刪除)
一般來說,如果你能看到它有一個父屏幕上的對象。你確定屏幕上留下的對象是你試圖刪除的對象嗎?您可以調試很多方法,例如:在對象上放置一個點擊處理程序。當一個人離開舞臺時,點擊該物體。在單擊處理程序中,查看該對象是否具有父級。檢查對象的「stage」屬性是否爲空。確定該對象是否在您正在迭代的陣列中,等等。 – 2012-08-04 20:19:31
Again @SunilD。好的起點,使用fxspy(如果使用flex,谷歌它)或怪物調試器(單獨使用AS3,不那麼直觀)可以有助於在運行時檢查事情,直接與UI交互以查看有關元素的屬性你在屏幕上看到。我能想到的一種可能性是通過某種方法將磚塊從其父項中移除,然後將其重新添加到該父項或其他顯示對象中,並且在父項爲空時執行代碼。 – shaunhusain 2012-08-04 20:40:44
非常感謝你們。我已經解決了這個問題,但我仍然無法理解... 所以我得到的是,無論什麼時候球擊中磚塊,我以前的代碼都會從其父項中移除磚塊,然後將它與數組拼接起來。 但是,當我註釋了數組上的拼接,它的工作原理應該是! ......甚至更多,我在Monster Debugger(謝謝@shaunhusain)中看到,數組長度減少了(我沒有想到) 所以我的問題是:從舞臺上移除Sprites是否也將它們從數組中移除他們在? (假設沒有變量指向精靈) – 2012-08-04 23:12:30