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

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

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

Регистрация: Mar 2008
Сообщений: 259
Ну индекс, как я понимаю i нужно передать, так? Он передается (ну я его как params назвал).
Далее вопрос с отписыванием: если необходимо рано или поздно отписаться из самого лисенера, как ОЧЕНЬ часто бывает, то тогда все вообще просто:
Цитата:
e.target.removeEventListener(EVENT,x);
Если, конечно, необходимо отписаться в другом месте, то скорее всего придется делать хэш (а я и не говорил, что это 100% универсальный способ), но это ничем не хуже, чем делать хэш с параметром внутри, а в случае необходимости передачи >1 параметра этот способ может и удобнее.

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

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от Сайлас Посмотреть сообщение
Код:
e.target.removeEventListener(EVENT,x);
e.target? Типизация вообще не волнует? Давайте работать с абстрактными объектами, а чо?

При каждой подписке вы создаете функцию (новую! А значит забиваете память копиями этой функции), вызываете метод со ссылкой на эту функцию, а потом ещё и метод должен этот кусок кода отписывать от обработчика? А как отписать такую функцию вне обработчика? А если обработчик вообще не вызовется? Из-за лени вы создаете себе кучу дальнейших проблем, но зачем?

Старый 08.07.2008, 15:58
Сайлас вне форума Посмотреть профиль Отправить личное сообщение для Сайлас Найти все сообщения от Сайлас
  № 13  
Ответить с цитированием
Сайлас

Регистрация: Mar 2008
Сообщений: 259
Цитата:
e.target? Типизация вообще не волнует? Давайте работать с абстрактными объектами, а чо?
e.target всегда будет иметь метод removeEventListener, раз событие вызвано. Что вы имели в виду?
Цитата:
А как отписать такую функцию вне обработчика?
Ну вне обработчика можно также создать хэш объект -> ф-ция (но я не говорил, что это универсально, смотрите PS).
Цитата:
А если обработчик вообще не вызовется?
И что, а если ошибка в реализации кода?

P.S. Я не говорил, что этот метод универсален. Но если ситуация такова, что отписываться нужно внутри функции листенера, то это очень удобный вариант. Тут создаются функции, а вашим способом хэш, только для хэша нужно почву подготовить, а тут уже все само генерится.
Если же приходится вне лисенера отписываться, то уже может можно выбирать и хэш.
P.P.S. Кстати, есть еще один "грязненький" способ, если объект, вызывающий евент является экземпляром динамик класса, то можно проперти в него сувать. Ну, например, в экземпляр мувиклипа

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

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от Сайлас Посмотреть сообщение
e.target всегда будет иметь метод removeEventListener, раз событие вызвано. Что вы имели в виду?
Он имеет тип Object, а не EventDispatcher. И нельзя быть на 100% уверенным, что такого метода не будет.

Цитата:
Сообщение от Сайлас Посмотреть сообщение
И что, а если ошибка в реализации кода?
Это и есть ошибка в реализации кода, собственно.

Цитата:
Сообщение от Сайлас Посмотреть сообщение
P.S. Я не говорил, что этот метод универсален. Но если ситуация такова, что отписываться нужно внутри функции листенера, то это очень удобный вариант.
Угу, только жрет память и с отпиской проблемы основательные.

Тут создаются функции, а вашим способом хэш, только для хэша нужно почву подготовить, а тут уже все само генерится.
Цитата:
Сообщение от Сайлас Посмотреть сообщение
Если же приходится вне лисенера отписываться, то уже может можно выбирать и хэш.
Вероятность ситуации, когда отписка будет происходить вне обработчика — 99%.


Цитата:
Сообщение от Сайлас Посмотреть сообщение
P.P.S. Кстати, есть еще один "грязненький" способ, если объект, вызывающий евент является экземпляром динамик класса, то можно проперти в него сувать. Ну, например, в экземпляр мувиклипа
Ну зачем учить плохому-то? Либо укажите, что так сделать можно, но не стоит. Иначе потом появляются быдло-программеры, везде и вся использующие подобные методы.

Старый 08.07.2008, 17:25
lizards вне форума Посмотреть профиль Отправить личное сообщение для lizards Найти все сообщения от lizards
  № 15  
Ответить с цитированием
lizards

Регистрация: Apr 2008
Сообщений: 21
__etc: попробовал, трейсится "undefined" : (

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

Регистрация: Mar 2008
Сообщений: 259
Цитата:
Ну зачем учить плохому-то? Либо укажите, что так сделать можно, но не стоит. Иначе потом появляются быдло-программеры, везде и вся использующие подобные методы.
Так я же и написал, что он "грязненький".

Старый 09.07.2008, 01:05
Яски вне форума Посмотреть профиль Отправить личное сообщение для Яски Найти все сообщения от Яски
  № 17  
Ответить с цитированием
Яски

блогер
Регистрация: May 2008
Адрес: (0, 10, 185) в локальной системе
Сообщений: 721
Записей в блоге: 6
Цитата:
Сообщение от lizards Посмотреть сообщение
__etc: попробовал, трейсится "undefined" : (
Опробовал код, приведенный __etc, все работает - следовательно ошибка у вас. Выложите свой кусок кода.

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

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

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

Регистрация: Mar 2008
Сообщений: 259
Неправда, сразу написал, что "грязненький" - не было редактирований, вы же супермодер, можете проверить.

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

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от Сайлас Посмотреть сообщение
Неправда, сразу написал, что "грязненький" - не было редактирований, вы же супермодер, можете проверить.
http://www.flasher.ru/forum/showpost...70&postcount=4

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

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

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


 


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


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