2014-02-18 26 views
2

我正在使用Flash Professional CC在ActionScript 3中設計一個國際象棋遊戲。我使用IDE創建了一個棋盤,並將棋子放置在其初始位置。每個圖塊具有其自己的實例並被命名爲其各自的座標,例如左上方的瓷磚被稱爲A8。用於棋盤的ActionScript 3 - 2D數組

爲了計算有效的移動等,我計劃使用兩個二維數組對象。一個數組應該包含瓦片實例,例如A8,B8,C8,D8等,另一個應該包含棋子的棋子,例如BR1,BB1。

我注意到ActionScript不允許用戶實現像C++(我熟悉的語言)這樣的2D數組;相反,使用嵌套數組。我對如何設置這些數組有點困惑。什麼是最有效的方式來聲明和初始化這些數組(希望不涉及重複的代碼)?

回答

1

歡迎來到AS3開發者的軍隊。

下面是一些提示你:

  • 陣列可以被定義爲var array:Array = [];,這裏是一個二維數組 - var a:Array = [[]];。數組是動態對象,您不需要指定數組的深度。所以,當添加瓷磚到陣列只需通過array[x][y] = tile
  • 添加它們說了這樣,不要使用數組:)你嚴格鍵入收集器稱爲矢量。您需要定義Vectors:1d var myVector:Vector.< Tile > = new Vector.< Tile >();和2d版本var myVector:Vector< Vector.< Tile > >;等。

向量比數組快。

更多提示:

  • 保存黑色和寫在圖書館磚和建設上運行時的網格可能對你更好。
  • 通過實例名訪問屏幕上的對象是一個壞主意 - 很多工作和可維護性差。另外,在場景完成構建之前,您將無法訪問它們,並且您將以動態對象的形式訪問它們,您需要將它們轉換爲您需要的類以正常使用它們。這也會導致無聲的錯誤,因爲如果你試圖訪問非法的東西,你不會在編譯時發出警告。
+0

它必須是'myVector:' –

+0

SO的格式改變了它。感謝您告訴我,我會對其進行編輯 –

+0

由於存在兩種不同類型的瓷磚(淺色和深色),我無法使用矢量工作。我嘗試使用DisplayObject和MovieClip作爲類型,但它仍然表示存在強制問題,所以我使用了2D數組並將它們設置爲'boardCoordinates [0] = [A8,B8,C8,D8, E8,F8,G8,H8];'這似乎工作,所以感謝您的幫助:) –