Flash 游戏制作教程 < 一>

Tile Based Games 1.1
 by TONYPY 翻译: jackgun_at_126.com

 地图的格局(map format)  

  我们将使用在 Flash 中最好的方法来表达一个游戏的地图:数组( Arrays ). 如果你不知道什么是数组( Arrays )那就打开 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 的数组声明,仍然和上面的数组一样.但是它的第一个元素 myArray[0] 的值也是一个数组 ["a1", "a2", "a3"], 第二个元素的值是 ["b1", "b2", "b3"]. 像这样: 

    myVar=myArray[2]; 

   这样就把 myArray 的第三个值 ["c1", "c2", "c3"]. 赋给了 myVar 变量。  

 好了,这就是二维数组。你要问取值的方法吗?这样写: 

     myVar=myArray[2][0];  

   意思就是 myArray 数组中第三个元素里的第一个元素的值,myVar它等于 "c1". 

 同样 myVar=myArray[0][1] 是将指 myArray (0) 的值 “a” 里的第二个元素的值 ”a1” 赋给myVar

  myArray[1][0] 它的值等于 "b1"   

 

 现在,明白二维数组的定义了吗? 

 Tile Based Games 1.2
 by TONYPY 翻译: jackgun_at_126.com

 制作游戏地图  

首先我们将一个地图分成等分的方格,然后用二维数组的方式来表达砖块或砖墙的位置: 

 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 的对象模板。在游戏里其它的砖都和它一样有共同的属性。通常这种情况这些砖只有两个属性,一是 “walkable” (可行走),一是 “frame” ()

 Walkable 砖的属性之一,用来告诉我们那块砖是可以行走的, (我们设 walkable=true)  或不能行走的 (walkable=false). 这样我们就可以避免在游戏里使用 hitTest 这种又慢又不 cool 的垃圾 function 了。 

 Frame 砖的属性之一,它告诉我们在某个位置放什么子的砖(不同的 Movie clip) 和什么时候放置砖块。 这样我们就可以不断复制相用的砖的 mc 形成我们要的地图,所有的砖默认都是名为 “frame1” 的砖块样式。更多关于 frame 的内容我们到“创建砖块” 部份再说。  

 下面,我们声明一块砖的对象: 

 Tile1= function () {};   

Tile1.prototype.walkable=false;   

Tile1.prototype.frame=2; 

   现在,我们以后在地图里数组值为 1 时都用这个砖对象。同时,这块砖 (Tile1) 被声明了它是不可以被穿过的 (walkable=false) ,并且在显示的时候用 frame 2 的砖块 mc




[本日志由 jack 于 2006-06-29 03:07 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: Flash 游戏 制作 教程
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.