Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.01.2015, 15:18
Vlad84 вне форума Посмотреть профиль Отправить личное сообщение для Vlad84 Найти все сообщения от Vlad84
  № 1  
Ответить с цитированием
Vlad84

Регистрация: Jul 2012
Сообщений: 148
По умолчанию Перезапись addEventListener

Есть ли на as3 возможность как-то перезаписать уже существующий листенер?
Например, есть кнопка с одним экшеном:
Код AS3:
btn.addEventListener(MouseEvent.CLICK, btnAction);
function btnAction(e:MouseEvent) {
 
}
Я к той же кнопке хочу добавить новый хэндлер, но проблема в том, что листенеров у меня очень много будет для этой кнопки и действовать должен только один, который только что добавлен, а не все сразу.

Старый 21.01.2015, 15:59
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 2  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
У метода addEventListener есть параметр priority, который поможет в вашей ситуации. Выставляйте слушателям нужные приоритеты, а при срабатывании листенера с наивысшим приоритетом, отключайте распространение события через e.stopImmediatePropagation().

Или просто удаляйте все предыдущие слушатели.

Старый 21.01.2015, 17:43
Vlad84 вне форума Посмотреть профиль Отправить личное сообщение для Vlad84 Найти все сообщения от Vlad84
  № 3  
Ответить с цитированием
Vlad84

Регистрация: Jul 2012
Сообщений: 148
Получается, что каждый раз нужно считать приоритет, который будет еще выше. Придется держать переменную с приоритетом

Старый 21.01.2015, 17:53
ObOs вне форума Посмотреть профиль Отправить личное сообщение для ObOs Найти все сообщения от ObOs
  № 4  
Ответить с цитированием
ObOs
 
Аватар для ObOs

Регистрация: Jul 2009
Сообщений: 149
А вам принципиально надо несколько слушателей?
Почему бы не сделать все в одном слушателе:

Код AS3:
btn.addEventListener(MouseEvent.CLICK, buttonClickHandler);
private function buttonClickHandler(event:MouseEvent) 
{
	if(variable)
	{
		dosomething_1();
	}else
	{
		dosomething_2();
	}
	//......
}

Старый 21.01.2015, 18:03
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 5  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Цитата:
Сообщение от Vlad84 Посмотреть сообщение
Придется держать переменную с приоритетом
И что? Если программиста пугает одна единственная переменная, это очень странно.

Старый 21.01.2015, 18:45
Vlad84 вне форума Посмотреть профиль Отправить личное сообщение для Vlad84 Найти все сообщения от Vlad84
  № 6  
Ответить с цитированием
Vlad84

Регистрация: Jul 2012
Сообщений: 148
Цитата:
Сообщение от illuzor Посмотреть сообщение
И что? Если программиста пугает одна единственная переменная, это очень странно.
Не пугает, просто хотелось понять не будет ли она излишней.

Старый 21.01.2015, 19:58
olexandr вне форума Посмотреть профиль Отправить личное сообщение для olexandr Посетить домашнюю страницу olexandr Найти все сообщения от olexandr
  № 7  
Ответить с цитированием
olexandr
 
Аватар для olexandr

Регистрация: Aug 2007
Адрес: Ukraine, Kyiv
Сообщений: 643
Отправить сообщение для olexandr с помощью ICQ Отправить сообщение для olexandr с помощью MSN Отправить сообщение для olexandr с помощью Skype™
можно еще отписываться от ненужного хендлера - тогда приоритеты не понадобятся )
__________________
сайт, vk

Старый 22.01.2015, 12:43
gumback вне форума Посмотреть профиль Отправить личное сообщение для gumback Найти все сообщения от gumback
  № 8  
Ответить с цитированием
gumback

Регистрация: Sep 2012
Сообщений: 28
А у меня вообще сумасшедшая идея. Отнаследовать от кнопки новый класс CustomButton, переопределить dispatchEvent, где на пресс-событие диспатчить кастомный пользовательский ивент CustomEvent со свойством data, в котором передавать и какие-то данные, потом просто слушать это событие на кнопке, и в з зависимости event.data.someVariable через какой-нить оператор switch например вызывать уже разные ф-ции в основном коде... Хотя я только учусь, но вот такое вдруг пришло в голову.

Старый 22.01.2015, 13:00
olexandr вне форума Посмотреть профиль Отправить личное сообщение для olexandr Посетить домашнюю страницу olexandr Найти все сообщения от olexandr
  № 9  
Ответить с цитированием
olexandr
 
Аватар для olexandr

Регистрация: Aug 2007
Адрес: Ukraine, Kyiv
Сообщений: 643
Отправить сообщение для olexandr с помощью ICQ Отправить сообщение для olexandr с помощью MSN Отправить сообщение для olexandr с помощью Skype™
почему сумасшедшая? вполне нормальная идея
__________________
сайт, vk

Старый 22.01.2015, 14:16
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 10  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
gumback, думаю, это самый адекватный вариант из всех предложенных.

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:01.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 13:01.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.