Пара лет в теперь, существует все еще что-то о mouseEnabled, который я не получаю. У меня есть Sprite (например, здесь "Небо", которое содержит много объектов, одним из них является Облако, которое я не хочу получать События от нажатия мыши. Я накладываю это Небо на некоторых других экранных объектах. Я хочу, чтобы облако было видимо, но не к событиям от нажатия мыши блока. Если Вы видите дерево через облака, необходимо быть в состоянии нажать на дерево.
В классе Неба:
mouseEnabled = false;
cloud.mouseEnabled = false;
cloud.mouseChildren = false;
Даже с этой конфигурацией, когда облако по дереву, я не могу нажать на дерево потому что облачные блоки оно. Почему???
Вы говорите, что там "много предметов"? Скорее всего, это блокирует что-то еще. Я рекомендую добавить слушателя в сцену, и тогда вы сможете увидеть, какой объект получает клики:
import flash.utils.getQualifiedClassName;
stage.addEventListener(MouseEvent.CLICK, onClick);
private function onClick(event:MouseEvent):void
{
trace(event.target.name, getQualifiedClassName(event.target));
}
Разместите больше кода, и мы, вероятно, сможем больше помочь.
Несмотря на то, что Sky имеет значение false для mouseEnabled / mouseChildren ... это все еще объект, он по-прежнему занимает место и, следовательно, действует как область попадания для любых контейнеров PARENT, для которых для mouseEnabled / mouseChildren не задано значение false.
Поэтому я подозреваю, что ваш объект Sky не находится в том же родительском контейнере, что и ваш объект Tree. Ваш объект Sky, вероятно, имеет собственный родительский объект-контейнер, который является виновником перехвата событий.
Для уточнения: Любой объект, содержащий НИЧЕГО, будет иметь область попадания и будет перехватывать щелчки мыши, даже если для всех отдельных вещей, которые он содержит (формы, дочерние объекты и т. Д.), Для mouseEnabled / mouseChildren может быть установлено значение false.
Таким образом, даже если у вашего объекта Sky для mouseEnabled установлено значение false, ваше Sky (и его дочерние элементы) по-прежнему занимают место и, следовательно, по-прежнему дают родительскому контейнеру Sky область попадания для перехвата событий мыши.
Таким образом, ваше решение состоит в том, чтобы убедиться, что для всех родительских контейнеров Sky свойство mouseEnabled установлено в значение false, по крайней мере, до (но не включая) первого контейнера общего предка объектов Tree и Sky.
Кроме того, установив mouseEnabled = false и оставив mouseChildren = true, вы можете получить контейнер, в котором только выбранные дочерние элементы с mouseEnabled = true будут получать события щелчка :)