当前位置:软件学习 > Flash >>

Flash5ActionScript教程 四十九

b>检测碰撞

  碰撞检测技术在游戏设计中有着广泛的应用。例如,子弹击中目标,就是一种电影剪辑与电影剪辑之间的碰撞。通过检测,即可知道子弹是否击中了目标。

  在Flash 5中,可以用MovieClip(电影剪辑)对象的hitTest方法检测动画中的碰撞。hitTest方法检查一个对象是否已经与电影剪辑碰撞,并返回逻辑值真或假(true 或 false)。使用hitTest方法的参数可以指定编辑区中碰撞区域的x和y坐标,或使用另一个电影剪辑的目标路径作为碰撞区。

  动画中的每个电影剪辑都是MovieClip对象的实例,这样就可以从任何实例中调用该对象的方法,如下例所示: myMovieClip.hitTest(target);

  使用hitTest方法可以测试电影剪辑与点之间的碰撞,也可以测试两个电影剪辑之间的碰撞。下面就给大家介绍这两种检测的实现方法。

测试电影剪辑与点之间的碰撞:

1 在编辑区创建一个动态文本框,在Text Options(文本选项)面板的Variable(变量)域中输入touch。该文本框用于显示测试结果。
2
从图符库中把一个电影剪辑拖到编辑区,选择该电影剪辑。

3 选择Window $#@62; Actions(窗口$#@62;动作),打开Object Actions(对象动作)面板。
4 在工具箱的Actions(动作)类型中双击onClipEvent,并选择Mouse move事件。
5 在工具箱的Actions(动作)类型中双击Set Variable动作。然后在Variable框中输入_root.touch,在Value(值)框中this.hitTest(_root._xmouse, _root._ymouse, true),勾选右边的Expression(表达式)复选框。得到的脚本代码应如下面所示:
lipEvent (mouseMove) {
_root.touch = this.hitTest(_root._xmouse, _root._ymouse, true);
}
本例使用 _xmouse 和 _ymouse 属性作为碰撞区的X和y坐标,并把结果输出到第1步设置的文本框显示。
6 选择Control $#@62; Test Movie(控制$#@62;测试动画),移动鼠标到电影剪辑上面即可测试碰撞,测试结果返回文本框中。
3 选择mcHitArea,然后选择 Window $#@62; Actions(窗口$#@62;动作)。
4 双击工具箱中的 evaluate。
5 在Expression框中输入下列代码:
_root.status=this.hitTest(_root.mcDrag);
6 在脚本窗口选择onClipEvent动作,然后选择enterFrame事件。
7 选择mcDrag,然后选择 Window $#@62; Actions。
8 在工具箱中双击startDrag。
9 选择Lock Mouse to Center(锁定鼠标在中间)复选框。
10 在脚本窗口选择onClipEvent动作,然后选择Mouse down事件。
11 在工具箱中双击stopDrag。
12 在脚本窗口选择onClipEvent动作,然后选择Mouse up事件。
13 选择Control $#@62; Test Movie,拖动电影剪辑(图中的鱼)即可测试电影剪辑之间的碰撞,测试结果返回文本框中。
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,