[AS3]as3下hit的检测
在以前的as版本中,hit检测是使用MovieClip.hitTest的方法,有两种使用方法:
用法 1:根据 shapeFlag 设置,将 x 和 y 坐标与指定实例的形状或边框进行比较。如果 shapeFlag 设置为 true,则只计算在舞台上的实例实际占据的区域,并且如果 x 和 y 在任意一点重叠,则返回 true 值。此评估对于确定影片剪辑是否处于指定的点击区域或热点区域中很有用。
用法 2:计算 target 和指定实例的边框,如果它们在任意一点上重叠或交叉,则返回 true。
在as3中把这个方法分开了,分为hitTestPoint(用法 1)和hitTestObject(用法 2),其实在使用方法上还是跟以前的一样.同时增加了getObjectsUnderPoint(areInaccessibleObjectsUnderPoint)方法,可以获取在某个point下所有的子对象.
虽然增加了一个检测的方法,但是,还是没有需要的两个对象的边缘(实际象素)hit的检测,hitTestObject是按照对象所占的矩形区域来做的检测.虽然有hitArea,但是也是针对hitTestPoint使用的.
那么,怎么办呢? 如果对于规则的对象,可以利用几何关系来判断,其中一个是规则对象就用几何关系+hitTestPoint使用,可是,对于两个不规则对象的hit检测,怎么来确定呢?
双重的hitTestPoint循环?
- for(var i=0;i<w;i++)
- for(var j=0;j<h;j++)
- {
- if(a.hitTestPoint(mouseX,mouseY,true)&&b.hitTestPoint(mouseX,mouseY,true))
- trace("hit");
- }
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例