如何在AS3中的两个动态添加对象之间获得命中测试的命中点?

时间:2016-07-19 12:23:03

标签: actionscript-3 flex flex4 hittest

我想知道虚线撞到三角形对象时的实际生命值。

我在以下两个对象之间使用以下代码:

target.hitTestObject(border);

其中目标是三角形对象,边框是我放置一个带有描边SolidColorDash的矩形的组。

我使用以下代码获取命中坐标:

var x:Number = target.x;
var y:Number = target.y;

当虚线接触三角形对象的边界时,它给出了x和y坐标,但是当虚线接触三角形对象的位图数据时,我想要坐标。

enter image description here

所以任何人都知道如何解决这个问题或者如何获得命中坐标。

1 个答案:

答案 0 :(得分:1)

以下代码解决了我遇到真正碰撞的问题:

private var returnValue:Boolean;
private var firstPoint:Point;
private var secondPoint:Point;
private var firstRectangle:Rectangle;
private var secondRectangle:Rectangle;
private var firstObjectBmpData:BitmapData;
private var secondObjectBmpData:BitmapData;
private var firstOffSetMatrix:Matrix;
private var secondOffSetMatrix:Matrix;

public function testCollision(clip1:DisplayObjectContainer, clip2:DisplayObjectContainer):Boolean
{
        returnValue = false;

        firstRectangle = clip1.getBounds(clip1);
        secondRectangle = clip2.getBounds(clip2);

        if(secondRectangle.width != 0 && secondRectangle.height != 0 && firstRectangle.width != 0 && firstRectangle.height != 0)
        {
            firstObjectBmpData = new BitmapData(firstRectangle.width, firstRectangle.height, true, 0);
            firstObjectBmpData.draw(clip1);

            secondObjectBmpData = new BitmapData(secondRectangle.width, secondRectangle.height, true, 0);
            secondObjectBmpData.draw(clip2);

            firstPoint = new Point(clip1.x, clip1.y)
            secondPoint =  new Point(clip2.x, clip2.y)

            if (firstObjectBmpData.hitTest(firstPoint, 255, secondObjectBmpData, secondPoint, 255))
            {
                returnValue = true;
            }
        }

        return returnValue;
}