Отключение обнаружения мыши на дочернем элементе, но на родительском уровне - PullRequest
0 голосов
/ 14 мая 2019

Я добавляю видеоклип динамически. В какой-то момент я рисую мувиклип и помещаю растровое изображение в MC внутри MC и добавляю к нему фильтр Add. Позже я даю функциональность Drag для таких родительских мувиклипов. Я хочу, чтобы мышь обнаруживала все, кроме нарисованного растрового изображения. У меня уже есть мувиклип, в котором для растрового изображения установлено значение mouseEnabled false и mouseChildren false. Но растровое изображение все еще обнаруживается мышью. Когда я устанавливаю родителя mouseEnabled = false, родитель больше не перетаскивает, так что не работает. Когда я устанавливаю для родителя значение mouseChildren = false, ничего не меняется, растровое изображение все еще распознается. Как можно оставить нарисованное растровое изображение видимым, но при этом функция перетаскивания игнорирует растровое изображение в формате MC?

1 Ответ

2 голосов
/ 14 мая 2019

Итак, после небольшого обсуждения мы выяснили следующее:

  1. Игра с мышью напрямую была неправильной из-за иерархии списка отображения.
  2. Ответ был в методе DisplayObjectContainer.getObjectsUnderPoint (...) , который возвращает массив данных DisplayObjectContainer детей и внуков, которые являются непосредственно по данному пункту. Используя Мышь координаты в качестве точки (имейте в виду, что вам нужно предоставить координаты в Стадия координатного пространства, точно так же, как это происходит с hitTestPoint ), вы может получить список экранных объектов под указателем Mouse , а затем обрабатывать события мыши на основе этой информации.

Также по пути возникла проблема выяснения классов собранных объектов, решение довольно простое.

// We are in the root here.
addEventListener(MouseEvent.MOUSE_DOWN, onDown);

function onDown(e:MouseEvent):void
{
    var aPoint:Point = localToGlobal(new Point(mouseX, mouseY));
    var aList:Array = getObjectsUnderPoint(aPoint);

    // Lets browse through all the results.
    for each (var aChild:DisplayObject in aList)
    {
        // How to find if an object is an instance of certain Class.
        if (aChild is Shape)
        {
            trace("A Shape was found under a name of", aChild.name, "!!!");
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...