Actionscript 3.0 MovieClip хит-тест - PullRequest
       15

Actionscript 3.0 MovieClip хит-тест

0 голосов
/ 25 октября 2011

У меня есть мувиклип. Он представляет собой анимацию прыжка монстра. Для наглядности представим, что есть только 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 Ответ

1 голос
/ 25 октября 2011

Вместо stage.addEventListener, примените этого слушателя к вашему monster:MovieClip, чтобы вызывать обработчик onClick при щелчке мышью по монстру.

monster.addEventListener(MouseEvent.CLICK, onClick);

Вы можете проверить своего монстра на удар, пройдя по координатам x и y. Существует третий параметр shapeFlag, который проверяет фактические пиксели объекта (true) или ограничивающую рамку (false).

monster.hitTestPoint(x, y, true);

Или проверка удара по другому экранному объекту

monster.hitTestObject(obj);
...