收藏九域天地
九域天地友情链接
九域天地留言本
九域天地站点地图
      西安九域天地设计咨询网-VI/CI标志设计免费教程|平面广告设计教学文章|西安展示设计教程下载|室内装饰设计教程下载|多媒体动画制作在线教程文章|西安网站设计制作教程文章|招贴海报论坛教程|西安软件包装设计教程文章|西安展厅效果图设计教程|西安服装设计教程文章|西安公司标志设计|中国西安设计
   
西安九域天地设计咨询网-VI/CI标志设计免费教程|平面广告设计教学文章|西安展示设计教程下载|室内装饰设计教程下载|多媒体动画制作在线教程文章|西安网站设计制作教程文章|招贴海报论坛教程|西安软件包装设计教程文章|西安展厅效果图设计教程|西安服装设计教程文章|西安公司标志设计|中国西安设计
    当前位置:首页->设计相关->教程文章->多媒体设计文章    
   
 
西安九域天地设计咨询网-VI/CI标志设计免费教程|平面广告设计教学文章|西安展示设计教程下载|室内装饰设计教程下载|多媒体动画制作在线教程文章|西安网站设计制作教程文章|招贴海报论坛教程|西安软件包装设计教程文章|西安展厅效果图设计教程|西安服装设计教程文章|西安公司标志设计|中国西安设计
九域天地设计新闻
九域天地动向
设计相关文章
 
 
 
 
 
 
标志VI设计教程
Flash MX 编程深层次应用-复杂游戏(1)

第5章 复杂游戏的常用技术及方法

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的这种写法真是方便之极。

上面程序代码显示结果如下:

test[0][0][0]=1

test[0][0][1]=2

test[0][0][2]=3

test[0][1][0]=4

test[0][1][1]=5

test[0][1][2]=6

test[0][2][0]=7

test[0][2][1]=8

test[0][2][2]=9

test[1][0][0]=10

test[1][0][1]=11

test[1][0][2]=12

test[1][1][0]=13

test[1][1][1]=14

test[1][1][2]=15

test[1][2][0]=16

test[1][2][1]=17

test[1][2][2]=18

test[2][0][0]=19

test[2][0][1]=20

test[2][0][2]=21

test[2][1][0]=22

test[2][1][1]=23

test[2][1][2]=24

test[2][2][0]=25

test[2][2][1]=26

test[2][2][2]=27

如果不知道数组的内容就可以这样写:

test = [[[],[],[]],[[],[],[]],[[],[],[]]];

for (i=0; i<=2; i++) {

for (j=0; j<=2; j++) {

for (k=0; k<=5; k++) {

test[i][j][k] = ++val;

trace("test["+i+"]["+j+"]["+k+"]="+test[i][j][k]);

}

}

}

可以看到最后一层k的值不等于3,也就是说最里面那一层的项数可以由程序自由控制。当然这种定义方法要求对数组的层次理解非常清晰。

细心的读者一定注意到了,在前面讲到的画方格特效中有一个这样定义的数组:table = new Array({x:200, y:200, a:256, c1:cc1, c2:cc2, c3:cc2×2, c4:cc1/4});其实这也是一种数组定义的方式,叫做结构数组,这种定义控制方便,内容清晰明了。

在数组的应用中排序与查找是经常用到的功能,下面冒泡排序程序代码就是一个最简单的排序算法:

function sortmy_array(my_array) {

for (var i = 0; i<=my_array.length-1; i++) {

for (var j = 0; j<=my_array.length-i-1; j++) {

if (my_array[j+1]

//交换my_array[i+1]与my_array[i],保证小的在前面

temp1 = my_array[i+1];

my_array[j+1] = my_array[i];

my_array[j] = temp1;

}

}

}

}

这段程序完成的是升序排序,也就是说小的数往前移,大的留在后面。数组在游戏中的应用面非常广,比如用来存储物体的位置、数量、坐标点等。总之,数组最适合存储一组组的有规律的数值、字符串等内容。

 

 第 029 篇  首篇 上一篇 下一篇 返回 
 
 
 
 
  西安九域天地设计咨询网-平面广告设计、VI/CI设计、 室内装饰设计、多媒体动画制作、网站设计制作、招贴海报设计、软件包装设计、展厅效果图设计、公司标志设计 中国西安设计  
九域天地自助链接   九域天地友情链接   九域天地创作团队   九域天地人才招聘   九域天地联系方式   九域天地在线咨询
西安九域天地设计咨询网-VI/CI标志设计免费教程|平面广告设计教学文章|西安展示设计教程下载|室内装饰设计教程下载|多媒体动画制作在线教程文章|西安网站设计制作教程文章|招贴海报论坛教程|西安软件包装设计教程文章|西安展厅效果图设计教程|西安服装设计教程文章|西安公司标志设计|中国西安设计
 
九域天地联系电话   写信给九域天地
 
多媒体设计教程 网站设计教程 平面广告设计教程 环境装饰设计教程 界面创意设计教程