Flash命中检测区域

时间:2010-03-26 16:22:55

标签: flash actionscript-3 actionscript

使用Flash,是否可以检测对象是否完全在另一个上面? 例如。我有一个矩形(地板表面)和一个圆形(家具)。

现在我想检测圆是否完全位于(=超过)矩形,而不仅仅是它是否在某处撞到矩形。那可能吗 ?怎么样?

3 个答案:

答案 0 :(得分:2)

或者无需处理新代码,如果您的应用程序足够简单,您可以使用此图所示的解决方案:

alt text http://www.andrewwalpole.com/hitsolution.gif

拥有一个小于地板的单独命中区域对象将保证只有当圆圈完全在地板上时才能获得命中。

答案 1 :(得分:2)

不确定

function testOverlap( large:DisplayObject, small:DisplayObject ):Boolean {
    return large.getBounds(stage).containsRect( small.getBounds(stage) );
}

换句话说,获取大对象的bounds矩形,并使用Rectangle.containsRect查看它是否包含小对象的bounds矩形。

答案 2 :(得分:0)

我使用过这里看到的碰撞检测库:http://www.tink.ws/blog/as-30-hittest/

碰撞检测功能会返回一个flash.geom.Rectangle对象,该对象表示相互碰撞的2个对象的重叠边界。您可以使用它来完成您想要的操作,方法是检查矩形的宽度和高度与圆的宽度和高度,如果它们匹配,则圆圈完全在矩形上方。