WEB开发网
开发学院图形图像Flash [AS3]as3下hit的检测 阅读

[AS3]as3下hit的检测

 2012-02-06 12:15:35 来源:本站整理   
核心提示:在以前的as版本中,hit检测是使用MovieClip.hitTest的方法,有两种使用方法:用法 1:根据 shapeFlag 设置,将 x 和 y 坐标与指定实例的形状或边框进行比较,[AS3]as3下hit的检测,如果 shapeFlag 设置为 true,则只计算在舞台上的实例实际占据的区域,用法 2:计算 t

在以前的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循环?

  1. for(var i=0;i<w;i++)  
  2. for(var j=0;j<h;j++)  
  3. {  
  4. if(a.hitTestPoint(mouseX,mouseY,true)&&b.hitTestPoint(mouseX,mouseY,true))  
  5. trace("hit");  

Tags:AS as hit

编辑录入:coldstar [复制链接] [打 印]
赞助商链接