2011-06-12 24 views
0

我正在Flash中的一個小遊戲,以獲得AS3的基礎知識。但是,我遇到了一些我似乎無法解決的問題。Flash錯誤2007,2025;越來越高的分數似乎崩潰遊戲

我有我的玩家'頭像',應該從屏幕右側出現小硬幣。這些硬幣移動到我的玩家角色可以拿起的左邊。我想將它們從屏幕上移開,並在角色拿起一枚硬幣時將分數提高10。

然而,似乎是一對夫婦的bug:當我拿起一枚硬幣,我得到這些錯誤:

TypeError: Error #2007: Parameter child must be non-null 
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller. 

我推硬幣到一個數組,然後對它們運行foreach循環使他們對他們的移動和調用hitTestObject():

for each(var muntje:Muntje in geldArray) 
     { 
      muntje.moveMuntje(); 
      if(playerLola.hitTestObject(muntje)) 
      { 
       removeChild(muntje); 
       gameScore.addToValue(10); 
      } 
     } 

而且,當我拿起一枚硬幣,遊戲不完全崩潰;它似乎停了一下,拋出(垃圾郵件)一些錯誤信息,然後它將分數提高10,然後遊戲繼續。

編輯:我想我不能在這裏使用removeChild(),因爲'muntje'實際上不是一個孩子?我嘗試了諸如stage.removeChild(muntje)之類的東西,但那也不起作用。我將如何去除舞臺上的硬幣?

任何幫助?提前致謝。

回答

2

最安全的方法來消除的DisplayObject是

if (muntje && muntje.parent) muntje.parent.removeChild(muntje); 

這樣,你不關心誰持有的對象,它只是會從任何刪除(如果它被添加到任何東西。)

+0

非常感謝。那樣做了。然而,我的分數超過10更新,因爲呃,hitTestObject似乎不止一次觸發addToValue()。有沒有辦法讓它觸發一次?也許用布爾值? – cabaret 2011-06-12 13:35:17

+0

硬幣被收集後,你可能會從geldArray中移除,所以它不會再次觸發。 – alxx 2011-06-12 13:39:15

+0

我該怎麼做?有拼接?我對AS3相當陌生,所以我不瞭解這些技巧。我會閱讀這個:)謝謝你的時間! – cabaret 2011-06-12 13:42:18