![]() |
Проблемы с priority в addEventListener
Здравствуйте, столкнулся с проблемой выставления приоритетов прослушивателей эвентов. Есть два типа эвентов - один отвечает за информирование о состоянии (MyFirstEvent), второй о непосредственно сообщает о действии, которое нужно выполнить (MySecondryEvent). В экземпляре класса MovieClip в конструкторе добовляю прослушивальщика MySecondryEvent. Ожидалось, что после создания экземпляра класса MyTestObject и установки прослушивальщика MyFirstEvent с более высоким приоритетом, чем у MySecondryEvent при отмене эвента, не будет обрабатываться следующий за ним. На деле оказалось не так =( В чем может быть проблема?
Код AS1/AS2:
|
Приоритет - это для того же события, а не для разных.
|
Может кто подскажет, как можно организовать следующее. Есть некий класс. В нем крутятся свои эвенты(FirstEvent). Для каждого эвента внутри прописана своя логика действий. Если обработчик эвента не выполнял метод preventDefault(), то запустилась-бы логика внутри класса - если-же обработчик выполнил preventDefault(), то логика-бы проигнорировалась.
К примеру у нас есть кнопка. Мне необходимо, чтоб при клике по ней выскакивало сообщение, но при этом хочу, чтоб у меня была возможность вешать обработчик, который следил-бы за тем - все-ли условия выполнены? Т.е. логика выполнения находится в классе, проверка в обработчике событий. Буду благодарен за любую помощь! |
Я думаю в таком случае проще stopPropagation() / stopImmediatePropagation() сделать, чем придумывать как preventDefault() реализовать. Первое вам никак реализовывать не надо, просто вызвали, и распространение событий закончится, а второе - нужно в дефолтном обработчике проверить isDefaultPrevented и дальше уже строуть логику в зависимости от этого.
|
2wvxvw, а как назначить дефалтный обработчик для эвента? Я правильно понимаю, что это обычный добавление прослушивание с самым низким приоритетом? Так-как ничего в доках про дефалтные обработчики я не нашел =(
|
Это чистая условность. Т.е. имеется в виду обработчик, который подписывает сам компонент, а не другие компоненты. Т.е. пример для тексфилда - отобразить букву после нажатия на клавишу - это дефолтное поведение, и, скорее всего в текстфилде есть специальный слушатель для этого, т.как получить на него ссылку вы не можете, но иногда нужно сделать так, чтобы он не отобрзил букву, для этого вы и используете preventDefault() - а в самом дефолтном обработчике автор компонента заложил функционал типа "если да то, если нет - то нет".
|
| Часовой пояс GMT +4, время: 18:28. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.