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

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

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

Регистрация: Jan 2008
Адрес: Земля
Сообщений: 178
По умолчанию Оптом отписаться от прослушивания события

Подскажите, можно ли отписать от прослушивания события всех объектов прослушивания (listeners) ?

Т.е. имеется событие типа COMPLETE, на которое подписано сразу несколько листенеров, можно ли одним махом (одной строкой, одним вызовом метода removeEventDospatcher, в цикле или еще как-то) отписать всех листенеров от события COMPLETE ?

т.е. чтобы не писать много строк типа:
Код AS3:
myClassObject.removeEventListener(MyEvent.COMPLETE, onMyObject_Complete);
anotherClassObject.removeEventListener(MyEvent.COMPLETE, onAnotherObject_Complete);
thirdClassObject.removeEventListener(MyEvent.COMPLETE, onThirdObject_Complete);
... тем более в ситуации, когда не известны все подписанные листенеры

Старый 21.08.2010, 11:27
Zik. вне форума Посмотреть профиль Отправить личное сообщение для Zik. Найти все сообщения от Zik.
  № 2  
Ответить с цитированием
Zik.
 
Аватар для Zik.

Регистрация: Nov 2007
Сообщений: 1,724
Можно создать два массива - один массив объектов, которые подписаны на прослушивание, другой массив функций.
Или даже можно создать один массив объектов и один экземпляр Dicrionary, каждому объекту в нем присвоить его ссылку на функцию
Потом в цикле от всех сможете отписаться.
А так, чтобы одной строчкой, на сколько я знаю, нельзя

Старый 21.08.2010, 12:37
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 3  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Можно, подписываясь с weakReference=true.

А как Вы умудрились подписаться, что сами об этом не знаете?

Старый 21.08.2010, 13:40
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от RAlfDog Посмотреть сообщение
тем более в ситуации, когда не известны все подписанные листенеры
Так не бывает.

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

Регистрация: Jan 2008
Адрес: Земля
Сообщений: 178
Цитата:
Сообщение от etc Посмотреть сообщение
Так не бывает.
Бывает, когда неохота лазить по коду и смотреть где-что подписывал
и когда пишешь код для работы с сервером (есть классы отсылки запросов и приемы, у них два ответа COMPLETE_EVENT и ERROR_EVENT, на эти события подписаны разные прослушиватели, много прослушивателей).

Но главная причина - чтобы не писать много строк с removeEventListener

Старый 21.08.2010, 16:41
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 6  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Создайте метод removeListeners, один раз "полазьте по коду" в поисках всего, поместите в этот метод и вызывайте. Заведите блокнотик, записывайте все туда (:
__________________
тут я

Старый 21.08.2010, 18:07
Zik. вне форума Посмотреть профиль Отправить личное сообщение для Zik. Найти все сообщения от Zik.
  № 7  
Ответить с цитированием
Zik.
 
Аватар для Zik.

Регистрация: Nov 2007
Сообщений: 1,724
А еще как вариант, можно отписывать на всякий случай вообще все объекты, проходясь циклом по всем клипам и их вложениям


Последний раз редактировалось Zik.; 21.08.2010 в 18:17.
Старый 21.08.2010, 18:24
RAlfDog вне форума Посмотреть профиль Отправить личное сообщение для RAlfDog Найти все сообщения от RAlfDog
  № 8  
Ответить с цитированием
RAlfDog
 
Аватар для RAlfDog

Регистрация: Jan 2008
Адрес: Земля
Сообщений: 178
Цитата:
Сообщение от КорДум Посмотреть сообщение
Заведите блокнотик, записывайте все туда (:
Гы - гы

Добавлено через 37 секунд
Цитата:
Сообщение от ZIK68 Посмотреть сообщение
А еще как вариант, можно отписывать на всякий случай вообще все объекты, проходясь циклом по всем клипам и их вложениям
Цикл - интересная идея

Старый 21.08.2010, 18:38
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 9  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Ну и что, по классам реализующим IEventDispatcher (в частности наследников EventDispatcher`а, но не DisplayObject) такой подход не годится.

Если уж всё так плохо переопределите метод addEventListener и записывайте все ссылки сразу в массив, а потом удаляйте оттуда. Но это фуфло.

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

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

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


 


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


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