В каком порядке события запускаются при добавлении к кнопкам во Flash? - PullRequest
1 голос
/ 03 октября 2011

Если я сделаю это:

    myButton.addEventListener(MouseEvent.CLICK, doThingA);
    myButton.addEventListener(MouseEvent.CLICK, doThingB);

Есть ли какая-либо гарантия, что когда пользователь нажимает кнопку, события будут запускаться в определенной последовательности, и если да, то каков порядок? Или первое событие просто удаляется?

Ответы [ 2 ]

2 голосов
/ 03 октября 2011

Они вызываются в зарегистрированном порядке, поэтому в вашем примере doThingA будет вызываться раньше doThingB, если они имеют одинаковый приоритет.

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

myButton.addEventListener(MouseEvent.CLICK, doThingA, false, 0); // second
myButton.addEventListener(MouseEvent.CLICK, doThingB, false, 1); // first

Надеюсь, это поможет.

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

Они оба имеют приоритет по умолчанию, равный нулю (priority:int = 0 из аргументов, переданных addEventListener ), поэтому последовательность представляет собой порядок их добавления.

Чтобы изменить порядок после этого вам нужно будет перерегистрировать слушателя.

Другим способом было бы создание вспомогательных функций, которые помещают нескольких слушателей в список и дают каждому имя. Затем добавьте события в эту вспомогательную функцию.

myButton.addEventListenerHelper(TypeA, MouseEvent.CLICK, doThingA, false, 0); 
myButton.addEventListenerHelper(TypeB, MouseEvent.CLICK, doThingB, false, 1); 
// And then remove by making some helper function to iterate the list for the 
// given listener
myButton.removeEventListenerHelper(TypeA, MouseEvent.CLICK);
...