如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
D5POWER个人网站HYPERLINK"http://www.d5power.com"www.d5power.com官方网站HYPERLINK"http://www.webgamei.com"www.webgamei.com前篇勘误:在Monster.as中,第44行对计算频率进行控制时,if(date.time-_lastAction.time>_fps/1000)应为if(date.time-_lastAction.time>1000/_fps)。感谢各位兄弟的提示!第六篇设置地图在HYPERLINK"http://bbs.9ria.com/thread-67763-1-1.html"上一篇教程中。我们对游戏进行了美化,同时加入了简单的碰撞检测。在本篇中,我们将设置地图,先来看一下我们预期的效果:像上图这样,如果像我们原来那样通过for循环去生成地图,那基本上写if和else就可以把我们累死了。我们需要寻找规律,来达到批量处理的目的。从上图我们可以看出,所有的游戏对象都是比较整齐的摆放的。摆放的间距也基本上与游戏对象的宽度成比例。如果我们把可以通过的位置以0来表示,不能通过的位置以1来表示,那么,可以得到下图:这让你想到了什么吗?是的,是数组,我们可以用数组来标识地图:1.privatevarmapconfig:Array=[2.[0,0,0,0,0,0,0,0,0,0,0,0],3.[0,0,1,1,0,1,1,0,1,1,0,0],4.[0,0,1,1,0,1,1,0,1,1,0,0],5.[0,0,1,1,0,1,1,0,1,1,0,0],6.[1,0,1,1,0,1,1,0,1,1,0,1],7.[0,0,0,0,0,0,0,0,0,0,0,0],8.[0,0,0,0,0,0,0,0,0,0,0,0],9.[1,1,1,1,1,0,0,1,1,1,1,1],10.[0,0,0,0,0,0,0,0,0,0,0,0],11.[0,0,0,0,0,0,0,0,0,0,0,0]12.];在上面这个数组中,mapconfig[line]记录了第line行的全部地图元素,例如,当line为0的时候,也就是mapconfig[0]的元素“[0,0,0,0,0,0,0,0,0,0,0,0]”,可以看出,在这一行中,全部都是空位置。而当line为1的时候,mapconfig[1]的元素“[0,0,1,1,0,1,1,0,1,1,0,0]”告诉我们,中间有6个元素的位置是障碍物,无法通过。同样的,我们可以用2来表示敌人出现的位置,用3来表示自己的坦克出现的位置,于是,上面的数组就变成了现在这样1.privatevarmapconfig:Array=[2.[0,0,0,0,0,0,0,0,0,2,0,0],3.[0,2,1,1,0,1,1,0,1,1,0,0],4.[0,0,1,1,0,1,1,0,1,1,0,0],5.[0,0,1,1,0,1,1,0,1,1,0,0],6.[1,0,1,1,0,1,1,0,1,1,0,1],7.[0,0,0,0,0,0,0,0,0,0,0,0],8.[0,0,0,0,0,0,0,0,0,0,0,0],9.[1,1,1,1,1,0,0,1,1,1,1,1],10.[0,0,0,0,0,0,0,0,0,0,0,0],11.[0,0,0,0,3,0,0,0,0,0,0,0]12.];可以看出,在第一行的倒数第三个位置,出现了一个敌人,在第二行的第二个位置,出现了一个敌人,而自己则出现在最后一行的第五个元素。如果你喜欢用y来表示行,用x来表示列的话,那么第y行第x列的地图元素数据应该为mapconfig[y][x]。好了,下面让我们来用程序实现对这个地图数据的解析。我们新建一个类,继承自gameScene,暂时定义为D5Scene吧,当然,如果你喜欢其他的名字,可以自己定义:)在这个类里,我们声明一个用来保存地图数据的变量1./**2.*地图数据3.*/4.protectedvar_mapData:Array;还有一个解析方法,我们需要对_mapData进行循环解析,把其中的数字转换成可以通过的位置,或者障碍物,或者敌人,或者我们自己的角色。1./**2.*配置地图3.*4.*@paramarr地图数据5.*/6.publicfunctionsetup(arr:Array):void7.{8._mapData=arr;9.if(arr[0]==null||arr[0][0]==null)return;10.11.vary:uint=0;12.varx:uint;13.14.foreach(var