基于 Flash ActionScript 1.0 编写的挡板游戏 作者:Pom 翻译:ShuhanKuang 本文章发表已经获得作者的允许, 原文章地址:http://www.kirupa.com P/S:里面的教程都很棒的,有兴趣的可以到那里学习学习。^_^。还有就是翻译过程中难免出现错误,希望指出和更正。
正如你所知,在FLASH中有很多方法检测碰撞的,有一个方法叫hitTest(),在自带字典里有两中解释:
myMovieClip.hitTest(target) // 电影剪辑和电影剪辑的检测 myMovieClip.hitTest(x, y, shapeFlag) //点和电影剪辑的检测
如果你曾经用过这两个个方法,你肯定会发现它的局限:第一函数,只能检测两个包含剪辑的最小框的碰撞,(图中包含剪辑的蓝色矩形),在我下面做的简单的示例中,你可以得知当剪辑不是规则的矩形的时候,这样的检验是没有什么作用的,(例如两个圆,或两条角度不同的直线)。
 (图1)
你可以得到这个结论,FLASH检测了“非”碰撞。(“非”这里是自己想的,毕竟水平有限不知道怎么解释好) 第二个函数能进一步准确地检测碰撞,但它只局限在一个电影剪辑和点的范围内。 下面还有一个关于hitTest()方法的问题。我将它叫做“Where-did-my-hitTest-go?”(消失的碰状?~_~翻译过来不好听的,呵呵),让我们尝试检测一个球和一面墙(这里用垂直的线表示)是否发生了碰状。
 (图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(面向对象编程)才能看明白这个游戏的代码。
出处:蓝色理想
责任编辑:qhwa
上一页 下一页 基于 as1.0 的挡板游戏 [2]
◎进入论坛Flash专栏版块参加讨论
|