2011-09-30 56 views
0

我正在製作一款側置滾動平臺遊戲。正因爲如此,我有一個充當地板的班級。我也有一個代表敵人的班級。將參數傳遞給構造函數給一個對象(Actionscript 3)

我有問題將參數傳遞給自定義類的構造函數。類(SkullDemon.as)擴展了MovieClip。我試圖傳遞一個名爲「FloorLevel1」的客戶類的實例(稱爲「floorL1」)。 「FloorLevel1」還擴展了MovieClip(我沒有爲「FloorLevel1」創建一個書面的.as文件;我只是將地板MovieClip導出到該類)。

我想通過一個「FloorLevel1」的實例,以便「SkullDemon」對象可以像在平臺上一樣落在地板上。

我的主類叫做「TME2_Main」。這是我嘗試將「floorL1」實例傳遞給「SkullDemon」類的類。這是我嘗試創建一個骷髏妖實例,並通過「floorL1」給它的構造:

skullD1 = new SkullDemon(floorL1); 

我儘量在「TME2_Main的」構造函數創建SkullDemon。

這裏是「SkullDemon」類的構造函數:

 // Constructor (takes in Level 1's floor variable as an argument 
    public function SkullDemon(floorL1:FloorLevel1) { 
    //public function SkullDemon() { 
     // Move the Skull Demon as soon as it is created 
     moveSkullDemon(); 

    } 

我得到兩種類型的錯誤,當我運行瑞士法郎:

ArgumentError: Error #1063: Argument count mismatch on SkullDemon(). Expected 1, got 0. 
at flash.display::Sprite/constructChildren() 
at flash.display::Sprite() 
at flash.display::MovieClip() 
at TME2d_Main() 

TypeError: Error #2007: Parameter child must be non-null. 
at flash.display::DisplayObjectContainer/addChild() 
at flash.display::Stage/addChild() 
at TME2d_Main() 

什麼我錯在這裏做什麼?我花了一段時間尋找解決方案(包括在TME2_Main的構造函數之外移動代碼),但到目前爲止,沒有什麼能真正幫助我。

+0

你確定錯誤發生在指定的頭骨惡魔的創建?錯誤是說它期待一個參數,但沒有得到一個參數。它看起來像是在TME2 * d * _Main()類中發生的。 – malificent

+0

是的,這正是我困惑的原因! :P如果我從調用SkullDemon構造函數的參數中刪除參數,並從SkullDemon類的構造函數中刪除參數,則不會出現錯誤。 –

+0

你在SkullDemon構造函數的其他地方還有其他的調用嗎?我想我很困惑,爲什麼你說錯誤發生在TME2_Main類中,但堆棧跟蹤顯示TME2d_Main。 – malificent

回答

0

聽起來就像你在舞臺上某個地方有一個SkullDemon的實例。如果這樣做,Flash將嘗試調用SkullDemon的構造函數而不傳遞任何參數。當它發生在Sprite類的constructChildren()方法中時,通常可以告訴這是問題。

相關問題