频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

基于 as1.0 的挡板游戏-oop篇

来源:蓝色理想 作者:shuhankuang 出处:巧巧读书 2006-12-14 进入讨论组

基于 Flash ActionScript 1.0 编写的挡板游戏
作者:Pom
翻译:ShuhanKuang
本文章发表已经获得作者的允许,
原文章地址:http://www.kirupa.com
P/S:里面的教程都很棒的,有兴趣的可以到那里学习学习。^_^。还有就是翻译过程中难免出现错误,希望指出和更正。

正如你所知,在FLASH中有很多方法检测碰撞的,有一个方法叫hitTest(),在自带字典里有两中解释:

myMovieClip.hitTest(target) // 电影剪辑和电影剪辑的检测
myMovieClip.hitTest(x, y, shapeFlag) //点和电影剪辑的检测

如果你曾经用过这两个个方法,你肯定会发现它的局限:第一函数,只能检测两个包含剪辑的最小框的碰撞,(图中包含剪辑的蓝色矩形),在我下面做的简单的示例中,你可以得知当剪辑不是规则的矩形的时候,这样的检验是没有什么作用的,(例如两个圆,或两条角度不同的直线)。

基于 as1.0 的挡板游戏-oop篇(图一)
(图1)

你可以得到这个结论,FLASH检测了“非”碰撞。(“非”这里是自己想的,毕竟水平有限不知道怎么解释好)
第二个函数能进一步准确地检测碰撞,但它只局限在一个电影剪辑和点的范围内。
下面还有一个关于hitTest()方法的问题。我将它叫做“Where-did-my-hitTest-go?”(消失的碰状?~_~翻译过来不好听的,呵呵),让我们尝试检测一个球和一面墙(这里用垂直的线表示)是否发生了碰状。

基于 as1.0 的挡板游戏-oop篇(图二)
(图2)

你可以从上面的图看出,在每一帧中都没发生物理的碰状,就算球已经穿过了墙壁,这是因为碰状是基于帧检测的。很幸运地,这个问题可以得到解决,或者至少可以说这个问题不会在我们做游戏过程中带来太多的麻烦。心急了吧?那么让我们开始有趣的部分吧

游戏:

我们要做的事是创建一个简单的PONG游戏,那么先看看下面的一个简单的例子,你可以测试一下效果

当你看到第一个原文件(名字叫pong_00.fla),你可以发现里面只有两层:

1:code,里面调用了一个外部的AS文件
2:object ,里面包含了一个名为bar的挡板和名为ball的球

可能有一部分的人不那么熟悉#include的语法,通过运用这个语法好处就是,你能用外部编辑器修改你的代码,例:如Scite|Flash、SE|PY,而不局限在FLASH的动作面板,如果你曾经过这个语法,那么给你带来的结果一定不会让你失望的,当然,如果你不喜欢用这个方法,那么你就要删去#include这一句和复制代码到FLASH的动作面板里面。

为了保证代码的简洁和容易更新,我们应该为我们的游戏写一些简单的类。(这里用的是as1.0,如果你有时间和想要训练自己,建议你将代码写成2.0的)。但是先不要害怕,你没必要熟悉了oop(面向对象编程)才能看明白这个游戏的代码。

更多文章 更多内容请看游戏开发网络游戏攻略专题,或进入讨论组讨论。
更多专题 【深 度 阅 读】 相 关 文 章
    收藏此文】【 】【打印】【关闭
    相关图文阅读
    频道图文推荐
    健 康 咨 询
    时 尚 咨 询
    巧巧读书宗旨
    相关专题
    讨论组问题推荐
    站内各频道最新更新文档
    站内最新制作专题
    热门关键字导读
    Photoshop教 程照片处理 照片制作 PS快捷键 抠图
    计 算 机 故 障XP系统修复
    艺 术 与 设 计设计 流媒体 设计欣赏 边框
    计 算 机 安 全ARP
    站内频道文章精选
    巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章