as3 остановить распространение события - PullRequest
2 голосов
/ 20 июля 2010

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

this.addEventListener(MouseEvent.CLICK, firstlistener);

function firstlistener(e:Event)
{
    //do stuff
    e.stopImmediatePropagation();
    this.addEventListener(MouseEvent.CLICK, secondlistener);
}

Ответы [ 2 ]

4 голосов
/ 20 июля 2010

Вы можете добавить одновременно и firstListener, и secondListener, но установите приоритет для первого, который будет выше. Таким образом, он может условно прекратить распространение до второго.

this.addEventListener(MouseEvent.CLICK, firstlistener, false, 100);
this.addEventListener(MouseEvent.CLICK, secondlistener);

function firstlistener(e:Event)
{
    if (...condition...) {
        e.stopImmediatePropagation();
    }
}

но если у вас есть контроль над обоими слушателями, то может быть лучше условно вызвать второй из первого или передать второй, другой. Немного чище, чем при использовании stopImmediatePropagation.

0 голосов
/ 19 декабря 2012

Поскольку это MouseEvent, попробуйте передать:

e:MouseEvent

в качестве аргумента обработчика, а не:

e:Event
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...