地图的格式
我们将用Flash提供给我们的一个美妙的格式表示地图:数组。如果你不知道什么是数组,打开Flash的帮助,先看看。
二维数组
我们需要一个二维数组表示地图,不,他不是什么空间、时间的维数,它是说一个数组的每一个元素还是数组。迷惑了?让我们来看看。
通常,这是大家经常看到的简单的数组: myArray=["a", "b", "c", "d"];
这很简单。你可以用myArray[0]得到第一个元素,就是”a”,用myArray[1]得到第二个元素”b”,等等。 现在换个聪明的法子! 如果我们不用”a”,”b”和”c”放在数组中,但是我们把另外的数组放进去呢?是的,我们可以这么做的。看这里,让我们做个这样的数组:
a=["a1", "a2", "a3"]; b=["b1", "b2", "b3"]; c=["c1", "c2", "c3"]; myArray=[a, b, c]; 现在我们已经定义了一个数组,而且他的每一个元素都是数组。那么,myArray[0]的值现在就是一个数组 [“a1”,”a2”,”a3”],第二个元素值就是 [“b1”,”b2”,”b3”],等等。如果你这样写: myVar=myArray[2]; 那么myVar得到的值是 ["c1", "c2", "c3"]. OK,那又怎么样?现在你也许会问。我们不会停止在这里的。如果你这样写 myVar=myArray[2][0]; 那么他得到的值就是myArray第三个元素的第一个元素的值”c1”。 让我们试试更多的。 myVar=myArray[0][1] 取得myArray的第一个元素(a)的第二个元素(”a2”)。 myVar=myArray[1][0] 得到值”b1” 你想得到整个图片? 继续看……
创建地图
首先我们写出这个地图的数组,这个数组包含了每个方块的信息 myMap = [ [1, 1, 1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0, 0, 1], [1, 0, 1, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 1, 0, 1], [1, 0, 0, 0, 0, 0, 0, 1], [1, 1, 1, 1, 1, 1, 1, 1] ]; 正如你所看到的,我们的地图有6行8列。如果我们的英雄(主角)从左上角开始,他可以往右移动8格,往下移动6格,超出这个范围,他就会走出这个地图,走入未知的空间。
但是一些聪明的人已经想到了一个重要的问题:“数组中的这些数字是做什么用的呢?”好吧,我们会使用一些OOP(那是面向对象,不过不要逃跑,他们并不是像他们听起来那样可怕)来创建方块,并且管理我们的游戏(可以参阅Flash的OOP教程的链接部分)。在开始的时候,我们会定义多种方块,他们就像模板一样放到游戏中。然后我们遍历整个地图数组,检测每个数字。
例如,如果我们得到数字1,那么我们就从Tile1模板中创建一个新的方块,这个方块的特点我们都事先在模板中定义好了。在游戏中,我们会检查那个方块对象的属性。他可以有许多属性,最基本的方块只有2个属性:walkable(通行性)和frame(帧)。
Walkable是表示一个方块是不是允许角色从他上面走过去,如果可以,就是true(真);如果不是,就是false(假)。我们不使用hitTest,因为hitTest很慢,而且在区块游戏中使用hitTest并不是很好。
Frame是表示显示方块的第几帧。当放置方块到舞台时会用到这个参数。因为我们使用同一个方块movie clip(影片夹子,检查mc)来存放不同的方块。使用时复制这个mc。他们默认是显示第一帧。在“创建方块”部分会有更多这方面的内容。
所以,如果我们声明下面的方块: //wall tile Tile1= function () {}; Tile1.prototype.walkable=false; Tile1.prototype.frame=2; 那么我们每次在地图数组中遇到1的时候,就会创建一个类似的对象(Tile1),我们还定义了这个方块不能被通行(walkable=false),而且在那个点上的方块mc显示第二帧。
出处:蓝色理想
责任编辑:qhwa
上一页 为什么用方块? 下一页 关于地图的东西
◎进入论坛Flash专栏版块参加讨论
|