2013-09-05 280 views
0

我正在閱讀一篇關於創建多層次的教程,下面真的很關心我應該如何去做這件事。多層次

爲每個關卡創建一個類似乎很自然,每個類別 都會延伸AvoiderGame,並使用事件在它們之間切換。因此,我們 可能有名爲AvoiderGameLevelOne,AvoiderGameLevelTwo, 等的類,並且當 適當時,讓每個類都觸發「NavigationEvent.NEXT_LEVEL」。據推測,文檔類會監聽這個事件,當它聽到它時,它會運行「playScreen = new AvoiderGameLevelTwo()」(或者哪個級別是合適的),並通過 通過所有信息,例如分數和時間到這個新的 playScreen實例。

我不完全確定如何去做這件事。我把我的舞臺放置在一個名爲level1,level2等的類中,並且讓它擴展我的主類。爲了檢查一切是否正常,我在main中添加了一個名爲levelArray的公共靜態變量,這是一個空白數組。然後在level1中,我將數組推入了levelArray。

所以我的水平1級

package { 

    public class Level1 extends Main { 

     public var floor1:Array = new Array(); 
     floor1[0] = [2,1,1,1,1,1,2]; 
     floor1[1] = [1,1,1,1,1,1,1]; 
     floor1[2] = [1,1,1,2,1,1,1]; 
     floor1[3] = [1,1,1,1,1,1,1]; 
     floor1[4] = [1,1,1,2,1,1,1]; 
     floor1[5] = [1,1,1,1,1,1,1]; 
     floor1[6] = [2,1,1,1,1,1,2]; 

     public function Level1() { 

      Main.levelArray.push(floor1); 
     } 


    } 

} 

似乎並不奏效。 levelArray顯示爲空白。可能是因爲這兩個班級沒有正確溝通?任何想法,如果我正在接近這個正確的方式?

+0

與你的問題並不真正相關,但我不認爲你想讓你的Level類擴展主要是你嗎?我的意思是'Level1'不是'Main'的一種類型嗎? – Cadin

+0

是的。我只是認爲有這個參考主要可能讓他們溝通。我應該只是擴展MovieClip嗎? – Bindlestick

+0

根據級別類別的複雜程度,您可能需要創建一個基礎級別類並讓所有級別擴展該級別。 Level可以具有用於與Level對象進行通信的通用方法。很可能你會在Main中實例化一個新的Level並且以這種方式與之通信。 Level類不一定需要擴展任何東西(除非它實際上是一個MovieClip)。 – Cadin

回答

2

我不知道你的概念的其餘部分是否合理,但我認爲你已經顯示的部分的語法是關閉的。嘗試:

package { 

    public class Level1 extends Main { 

     public var floor1:Array = new Array([2,1,1,1,1,1,2], 
              [1,1,1,1,1,1,1], 
              [1,1,1,2,1,1,1], 
              [1,1,1,1,1,1,1], 
              [1,1,1,2,1,1,1], 
              [1,1,1,1,1,1,1], 
              [2,1,1,1,1,1,2] 
              ); 

     public function Level1() { 
      Main.levelArray = floor1; 
     } 
    } 

} 

編輯:如果不同的關於每個級別的唯一事情是構成地面陣列,可以考慮的是,你並不需要一個新的類爲每個級別,只是一個新的陣列。你可以爲該類中的每個級別定義數組,然後用每個級數替換它們。

+0

這是正確的答案。您不能在基於類的AS3中的函數之外運行代碼。如果你想添加一些東西到數組中,你可能需要在構造函數,另一個函數中執行,或者在數組聲明中完成,就像在上面的答案中所做的那樣。 –

+0

我打算爲不同級別添加不同的敵人。謝謝,它看起來像它的工作,我只需要找出級別類的擴展部分。 – Bindlestick