![]() ![]() | |
MovieClip 类的 hitTest() 方法可以检测 SWF 文件中的冲突。它检查某个对象是否与影片剪辑有冲突,然后返回一个布尔值(true 或 false)。
在两种情况下,您想知道是否已经发生了冲突:一种情况是测试用户是否已经到达舞台上的某个特定静态区域,另一种情况是确定影片剪辑何时接触到另一个影片剪辑。利用 hitTest() 方法,可以判定这些结果。
可以使用 hitTest() 的参数来指定舞台上某个点击区域的 x 和 y 坐标,或者使用另一个影片剪辑的目标路径作为点击区域。在指定 x 和 y 时,如果由 (x, y) 标识的点是非透明点,那么hitTest() 返回 true。当目标传递给 hitTest() 时,会对两个影片剪辑的边框进行比较。如果它们重叠,则 hitTest() 返回 true。如果两个边框没有相交,则 hitTest() 返回 false。
让鼠标指针滑过 SWF 文件中的形状来测试冲突。hitTest() 方法的结果会返回到文本字段中。
您也可以使用 hitTest() 来测试两个影片剪辑之间的冲突。
要测试冲突,则拖动汽车影片剪辑,使它接触停车区域影片剪辑。hitTest() 方法的结果会返回到文本字段中。
下面的步骤通过使用汽车示例介绍如何检测冲突。
在一个影片剪辑和舞台上的某一点之间执行冲突检测: box 作为实例名称。status 作为实例名称。
box.onEnterFrame = function () {
status.text = this.hitTest(_xmouse, _ymouse, true);
}
只要鼠标位于不透明的像素上方,就会显示值 true。
执行两个影片剪辑之间的冲突检测: car 和 area。status 作为实例名称。
area.onEnterFrame = function () {
status.text=this.hitTest(car);
}
car.onPress = function (){
this.startDrag(false);
updateAfterEvent();
}
car.onRelease = function () {
this.stopDrag();
}
只要汽车边框与停车区域的边框发生相交,该状态就会变为 true。
有关更多信息,请参见MovieClip.hitTest()。
![]() ![]() | |