设为首页 加入收藏 网站搜索 繁體中文 中国建站网 — 站长资源分享平台

一个完全使用AS2编制的飞机游戏之制作详解

来源:136z.Com 作者:佚名 时间:2005-06-21 23:57:03

[翻译]一个完全使用AS2编制的飞机之制作详解
作者:Steve
译者:EmilMatthew
翻译完成日:05/1/6
译者注:马上要考英语四级了,考前翻篇东东来练练兵:)。


作者自己的水平应该是很高的了,但从游戏的模式上而言,这个游戏并没有太多的创新,仍旧是无限循制,
不过想法上已经相当完整了,有这样一个很好的开发习惯,想做大的东东,就不会无从下手了。
作者写此文章的主要目的是在于介绍给大家如何真正用面向对象的AS2来写游戏,
所以,从这个角度而言,这篇文章还是相当优秀的,尤其是在国内这方面资料比较馈乏的时候,
这种文章可谓雪中送碳的佳举,我翻译一下,一方面是自己有提高,另一个方面,也算是给闪吧增点辉,给广大的FlashER做点贡献吧~~~~
(第一次翻国外的东东,所以有什么不地道的地方,敬请高手斧正,英文原文附在第三帖中了.
对了,要是作者本人给你发邮件说想找EmilMatthew收中文版的版权费时,你们就说不认识我啊,呵呵~~~:)
)

这篇文档是我第一个用OOP(面向对象的编程)方法写的AS2游戏。
这个一个标准的空间打击敌人的游戏,有三架敌机和一架游戏者的喷火镭射机。
起初只会有一关,但是设计上可以使得增加关数的可能性变得非常方便。
游戏中会有基本的分数以及生命值。
和别的正在挣扎着实行在Flash MX2004中的新的ACTIONSCRIPT2.0语法的人一样,
这篇文档也是为了我个人学习的好处。
我会遵照一个合理的传统的OOP设计的结构。
非常感谢并尊重来自http://www.1coinplay.com的Squize让我使用他的小精灵纸(?)来做为这个例子。

1要求文档。
2使用事件。
3类的表格。
4交互的表格。
5试验最初的代码。
6迭代(Iteration)
7测试。
8发布。

*************************************************************************************
要求:
Spaceship:
上下左右移动。
通过空格键来发射镭射。

Enemy:
在一个随机的高度从右移到左。
有三个实例。
当它从左移出屏幕时,重新回到右侧。

BackGround:
从左移到右。
前景要比背景移动的快(视差(PARALLAX))

Laser:
当空格键按下时火焰从飞船中喷出。

Game:
如果射到敌人,游戏者得到分数。
如果飞船撞到敌机,则会损失生命值。
如果游戏者得到了胜利的分数,那个他(她)就赢了,游戏重新开始。
如果损失生命数超过三,游戏结束,游戏者失败。

2使用的事件:
使用的事件是用图表来代表(设计的)要求。它们展示了在游戏中会发生的不同的事件,或者是所有会发生的不同的动作。


这就是你所有所要做的。仅仅是把它们在一张纸上完整的实现(NUT ?),
这张表格能很好的给最终将使用的类及方法一个好的提示。
当你做完这些以后,该是你搞定你会要使用什么类以及这些类需要什么什么属性及方法.


类的表格:
类的表格展示了类之间的关系。
在我们下面的这张表格里:飞船,敌人,镭射及背景类都包含在进了游戏类.
这意味着那些类的实体被在游戏类中声明了。
这被叫做取合或者是“有一层”关系而区别于被描述为“是一种”关系的继承。?
游戏类被取聚合进了我的Flash文件里。

类的描述:
宇宙飞船类
属性或方法 类型 描述
speed Number x变量的增量
moveShip() method 用按键来移动飞船
setShipX(x) setter _x变量获取值的方法
getShipX() getter 返回_x值
setShipY(y) setter _y变量获取值的方法
getShipY() getter 返回_y值

敌机类
属性或方法 类型 描述
enSpeed Number x变量的增量
moveEn() method 随机的移动敌机
setEnX(x) setter _x变量获取值的方法
getEnX() getter 返回_x值
setEnY(y) setter _y变量获取值的方法
getEnY() getter 返回_y值

镭射子弹类
属性或方法 类型 描述
fire() method start 当空格键按下时移动
setLaserX(x) setter _x变量获取值的方法
getLaserX() getter 返回_x值
setLaserY(y) setter _y变量获取值的方法
getLaserY() getter 返回_y值

背景类
属性或方法 类型 描述
scroll() method 从右移到左
setBackX(x) setter _x变量获取值的方法
getBackX() getter 返回_x值
setBackY(y) setter _y变量获取值的方法
getBackY() getter 返回_y值

游戏类
属性或方法 类型 描述
score Number 游戏者的得分
lives Number 游戏者的生命数
checkCollisions() method 碰撞检测
CheckLives(lives) method 如果生命值为0就停止游戏。
checkScore() method 检测并展示分数

交互的表格
交互表格述了通过方法传递的信息来符合我们一开始所提出的要求。
我现在对这项计划是否有效没有任何概念,因为我不知道Flash是否能处理组合。
游戏类包含着其它类并且是游戏的管理者。
但是我并不清楚是否能在一个类中控制一个继承于MovieClip类的子类(的实例).
那好,这里就是这计划,让我们看一下它是否能起作用。
计划不是被放在混凝土里的。如果它们无效,你可以把它们扔掉,或者是修改,甚至从草稿重新开始。
最重要的事情是过程。
通过过程来明确问题并呈现给我们处理问题的方法。这就像给电影的情节串连图版.
你草拟出它,呈现出脚本的想法同时也瞄准了观众的需求。
一旦你把这个都搞定了,你就把它扔在了一边并用本能进行着导演。
你知道故事的背景因为你浏览了情节串连图版的过程。这里也是如此:

上面是我画的一个份交互的表格。
我甚至做了一些改变并意识到一些在类表格中里所遗漏的内容。
就像那个moveship方法需要一个方向(左,右,上,下)并且我能过一个变量dir来传递按了哪个键。
dir可以是string类(“left”)或者是一个字母(1,2,3,4).这并不重要。

测试优先:
我新建了一个新的Flash 文件并创建了一个spaceship_mc(mc),把它连接到库里的ship_mc并把“Spaceship”放进连接(link)AS2 CLASS选项中。
然后在交互面板中我写下了下面的代码:

[1] [2] [3] [4] [5]  下一页

Tags:

  • 好的评价 如果您觉得好,就请您
      0%(0)
  • 差的评价 如果您觉得差,就请您
      0%(0)
  • 相关文章
    广告赞助

    文章随便看看 设计素材 建站学院 网页模板 视频教程

    网友评论

    共有 0 位网友发表了评论,得分 0 分,平均 0 分    查看完整评论

    用户名: 查看更多评论

    分 值:100分 85分 70分 55分 40分 25分 10分 1分

    内 容:

             通知管理员 验证码: