ActionScript 3 - 棋盘的2D数组

时间:2014-02-18 01:36:36

标签: arrays actionscript-3 flash 2d chess

我正在使用Flash Professional CC在ActionScript 3中设计一款国际象棋游戏。我使用IDE创建了一个棋盘,并将棋子放在初始位置。每个图块都有自己的实例,并命名为其各自的坐标,例如左上方的图块称为A8。

为了计算有效的移动等,我计划使用两个2D对象数组。一个数组应该包含tile实例,例如A8,B8,C8,D8等,另一个应包含电路板,例如BR1,BB1。

我注意到ActionScript不允许实现像C ++这样的2D数组(我熟悉的语言);相反,使用嵌套数组。我对如何设置这些数组感到有些困惑。声明和初始化这些数组的最有效方法是什么(希望不涉及重复代码)?

1 个答案:

答案 0 :(得分: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 > >;,依此类推。

矢量比阵列快。

更多提示:

  • 在库中保存黑色并写入图块并在运行时构建网格可能对您更好。
  • 通过实例名称访问屏幕上的对象是一个坏主意 - 大量工作和可维护性差。另外,在场景构建完成之前您将无法访问它们,并且您将它们作为动态对象访问它们,您需要将它们转换为您需要的类以正常使用它们。这也导致了无声的错误,因为如果你试图访问非法的东西,你就不会在编译时收到警告。