众所周之flash里通过hitTest()来检测碰撞
例子:如果检测a是否与b碰撞 如图:
Code
这样就完成了 hitTest()的碰撞演示
hitTest()方法存在很多限制。应用很单一。
比如,当可以拖拽的物体需要与很多排列很紧密的目标检测的时候
就会束手无策了。如图:
当把a拖到球的中间位置,hitTest()会认为是与四个球都碰到了
这恰恰不是我们想看到的结果;
解决的方法就是计算坐标之间的距离来判断
Code
另外:在flash里,hitTest()并不是我们看到的区域碰到一起就认为碰到。
flash里的hitTest()认为原件(影片剪辑)的左极点到右极点之间的区域,和顶极点与底极点之间的区域
即一个 矩形的区域,不管原件本身是什么形状。
看到这个区域很简单,就是把原件(什么形状的都可以)拖到舞台后,
点击这个原件后,出现了矩形区域。
这就会造成视觉上,没有碰到,但是已经有了交叉区域,
hitTest()认为碰到了。
所以就又不得不通过 检查坐标的接近程度来进行判断。
如果两个物体的原点坐标距离,小于他们的宽度(高度)一半
就认为是碰到
hitTest()测试 源文件下载
坐标检测例子 源文件下载
naiking
我在醒着