将对象检测到另一个对象as3

时间:2012-06-26 18:19:10

标签: actionscript-3 flash collision-detection

假设我在Movieclip容器中包含两个形状。如何检测一个形状是否超过另一个?更准确地说,一个形状是否覆盖了另一个形状的一部分/全部?

到目前为止,我已经设法通过比较两种形状的坐标来做到这一点,但我想知道是否有一些内置函数或更简单的方法。感谢

3 个答案:

答案 0 :(得分:2)

DisplayObject.hitTestObject(OBJ:的DisplayObject):布尔

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html#hitTestObject()

如果您需要更精细的谷物打击测试并且愿意使用BitmapData对象(您可以使用BitmapData.draw(dispObj)将DisplayObject绘制到BitmapData);

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html#hitTest()

答案 1 :(得分:2)

以下几种方法可以做到这一点:

flash.display.DisplayObject.hitTest()

flash.display.DisplayObject.getRect()

ex:sprite1.getRect(stage).intersects(sprite2.getRect(stage));

答案 2 :(得分:1)

您可以使用hitTestObject http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html#hitTestObject%28%29

trace(shape1.hitTestObject(shape2));

但请记住,如果只是对象的边界重叠,这是一个简单的测试。如果您想要像素完美的碰撞测试,您将不得不使用某些第三方库,例如http://www.freeactionscript.com/2011/08/as3-pixel-perfect-collision-detection/