我有一个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)
}
答案 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);