Вложенные мувиклипы не обнаруживают события мыши в ActionScript - PullRequest
1 голос
/ 31 марта 2010

У меня есть несколько вложенных мувиклипов. У меня есть слушатель событий на родительском устройстве, слушающий щелчок мыши. Проблема в том, что слушатель никогда не поднимает щелчок.

Код:

    var movieClipStack:MovieClip = new MovieClip();

    for each (var ol:OwnedLayerable in owned_layerables)
    {
        var mc:MovieClip = ol.layerable.mc;
        movieClipStack.buttonMode = true;
        movieClipStack.addChild(mc);
    }

    movieClipStack.addEventListener(MouseEvent.CLICK, onStackClicked);

    private function onStackClicked(evt:MouseEvent):void
    {
        // Do some stuff
    }

В movieClipStack я вижу, что mouseEnabled = true. Кроме того, buttonMode = true работает точно так, как и должно. Но onStackClicked никогда не происходит - movieClipStack просто не обнаруживает никакого события мыши.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 19 июля 2010

Существует малоизвестное свойство "mouseChildren", которое вы должны установить для элементов содержимого вашего видеоклипа, который слушает мышь.

Если вы не удалите эти другие элементы из потока событий, они, как правило,Затмение событий не очень предсказуемым образом.

Итак, вы должны назначить его следующим образом:

 parentMovieClip.mouseChildren = false;// turns off all internal mouse-listening clips

Если бы вы поместили это в MovieClip или в определение класса,Обычно я просто делаю это так:

 mouseChildren = false;

Кроме того, вот статья Adobe, объясняющая все это: http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/display/DisplayObjectContainer.html

Надеюсь, это поможет!Мне понадобилось HOOOOOOOURS, чтобы наконец раскопать этот.

0 голосов
/ 31 марта 2010

Пара идей ...

Сначала убедитесь, что movieClipStack.mouseEnabled == true, просто чтобы убедиться, что вы случайно не отключаете сообщения от мыши к вашему объекту.

Тогда я бы посмотрел на то, что hitArea вы установили для movieClipStack с trace( movieClipStack.hitArea );. Проверьте значения width и height, чтобы увидеть, приблизительно ли это ожидаемая ширина и высота movieClipStack.

Затем я бы поэкспериментировал с созданием простого прямоугольного спрайта и установил его как hitArea для movieClipStack.

Я надеюсь, что это работает. Удачи!

...