复杂游戏的常用技术及方法5.1 游戏中的数组应用
在游戏中数组应用是很常见的,下面列出几个常见的应用:
Ö 批量数据存储
Ö 二维方阵的排列
Ö 同类数据的归类
Ö 海量数据的查找
数组在编程中的应用很多,虽然这里只列出4条应用,但它的应用范围已大大超出。Flash对数组的支持也非常强大,系统提供的函数与属性就有14个,清单如下:
Ö new Array():创建数组。
Ö Array.concat():数组合并,将两个以上的数组合并成一个数组。
Ö Array.join():将数组的全部元素用一个字符连接成一个长的字符串。
Ö Array.pop():取出数组中最上面的元素,同时数组长度减1,主要用于数组堆栈中。
Ö Array.push():往数组中放入一个新元素,数组长度加1,主要用于数组堆栈中。
Ö Array.reverse();:对数组内的全部元素进行反向。
Ö Array.shift():取数组中的第一个元素,数组长度减1,主要用于数组队列中。
Ö Array.slice():从数组中取一部分出来创建一个新的数组。
Ö Array.sort();:为一个数组排序,主要用于字符串。
Ö Array.sortOn();:按数组的某个域名进行排序,有点类似于数据库的操作。
Ö Array.splice():从数组删除一个或者数个元素。
Ö Array.toString():把数组转换成字符串。
Ö Array.unshift();:把一批新元素放在数组的最前面,主要用于队列中。
Ö Array.length:数组的元素个数。
数组有这么多函数,除了Array.sortOn();是MX版本新增加的外,其他在Flash 5中都已经存在了,这里不再做详细的介绍。有关内容可以参看其他的Flash 5的书籍。下面主要讲MX的一些新的特性。比如说三维数组的定义,这在Flash 5中实现起来非常麻烦,但现在变得非常简单。请看下面这段代码:
test=[[[1,2,3],[4,5,6],[7,8,9]],[[10,11,12],[13,14,15],[16,17,18]],[[19,20,21],[22,23,24],[25,26,27]]];
for (i=0; i<=2; i++) {
for (j=0; j<=2; j++) {
for (k=0; k<=2; k++) {
trace("test["+i+"]["+j+"]["+k+"]="+test[i][j][k]);
}
}
}
这里定义了一个三维数组,其实这种定义方法还可以在Flash 5中使用,但在Flash MX没有推出之前,极少有人知道可以这样写。以前写定义二维数组总是这样:test = new Array(new Array(),new Array(),new Array());真是麻烦,但是MX的这种写法真是方便之极。