Actionscript 3.0 MovieClip命中测试

时间:2011-10-25 16:52:28

标签: actionscript-3 movieclip hittest

我有一个MovieClip。它代表跳跃怪物的动画。为了清晰起见,让我们假装只有2帧:第一个占据左上方的矩形(x = 0,y = 0,w = 70,h = 70),第二个占据(x = 100,y = 0,w) = 70,h = 70)。所以怪物从左向右跳跃。并且MovieClip本身的位置经常=(0,0)。 当用鼠标点击怪物时,我想发射一些事件。

出于某种原因,我有舞台鼠标监听器,而不是怪物鼠标监听器。 我写了这段代码:

stage.addEventListener(MouseEvent.CLICK, onClick);

private final function onClick(e:MouseEvent):void
{
    const clickPos:Point = new Point(e.stageX, e.stageY);
    // having monster:MovieClip, how do I check hitting it?
    // code below doesn't work
    // const r:Rect = new Rectangle(monster.x, monster.y,
    //                              monster.width, monster.height);
    // const hitTest:Boolean = r.containsPoint(stagePoint);
    // because r is always (0,0,70,70)
}

1 个答案:

答案 0 :(得分:1)

而不是stage.addEventListener,将该侦听器应用于monster:MovieClip,以便在用鼠标单击怪物时调用onClick处理程序。

monster.addEventListener(MouseEvent.CLICK, onClick);

你可以对着一个点来测试你的怪物,传递x和y坐标。 “shapeFlag”的第三个参数用于检查对象的实际像素(true)或边界框(false)。

monster.hitTestPoint(x, y, true);

或者,针对另一个显示对象点击测试

monster.hitTestObject(obj);