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

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

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

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
expl, и еще хотел узнать, почему использовать в таком случае логику неправильно? То есть, какое преимущество дает свой собственный слушатель события?
В том что логика линейная: есть кнопка - есть обработчик.

[не принципиальное, может надуманное]
Убрал кнопку - убрал обработчик
Перенёс кнопку в другой класс - перенёс обработчик, а не полез править код метода, где мог отломать по невнимательности работу других кнопок
[/не принципиальное, может надуманное]

Отказ от условной логики - это вообще тенденция ООП.
Понятное дело, что она нужна, но зачем же её делать на ровном месте

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Это интуитивное решение было у меня первым, но по каким-то причинам оно не работает...
Значит в методе addEventListener при добалении слушателя мыши нужно было задать параметр useCapture = true

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Добавлю
— вызов функции (обработчика) независимо от кнопки (события), когда надо.
— возможность объединять повторяющийся код в ситуациях, когда при нажатии на разные кнопки надо выполнять действия А и В, В и С, А и С.
__________________
Reality.getBounds(this);

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

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
— вызов функции (обработчика) независимо от кнопки (события), когда надо.
Иногда так делаю, но момент спорный:
надо сделать что-то ещё по клику на кнопке - дописываешь код,
а вот должен ли этот дополнительный код выполняться при вызове из другого куска?
Нагляднее вызвать внутри обработчика функцию, и эту же функцию вызывать из других участков - видно кто что делает

Цитата:
— возможность объединять повторяющийся код в ситуациях, когда при нажатии на разные кнопки надо выполнять действия А и В, В и С, А и С.
Оно вроде и удобно, но тоже момент спорный:
Захотел поменять поведение кнопки A, а должно ли меняться поведение кнопки B?
Если вместо использования одного onClick на кнопки A и B будет написано такое:
Код AS3:
private function onAClick(...) { doIt(); }
private function onBClick(...) { doIt(); }
Разработчик при внесении изменений в onAClick сразу поймет: "Ага, тут это действие еще кем-то запускается". И решит "Ага, это изменение является частью doIt и должно коснуться всех" или "Ага, это изменение касается только кнопки A, нечего ему делать в методе doIt"
А если бы был один обработчик onClick - он бы поменял и не задумался что там ещё кнопка B есть.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
А вообще, по сути моё добавление не относится к вопросу логика/не логика. Можно и в if'ах писать вызовы отдельных функций. Это скорее для меня воспринимается как единый стиль — минимально ответственные функции, представляющие поведение класса, а обработчики каких-то там кнопок)) — всего лишь триггеры, способные запускать эти функции. То есть реакция на нажатие кнопки и само действие (метод класса) — это разные вещи.
И вот огород из if'ов в мультихендлере никак не ложится в этот стиль с минимальной ответственностью.
__________________
Reality.getBounds(this);

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

Регистрация: Oct 2012
Сообщений: 191
"Уговорили", но частично. Пойду с собой на компромисс, и добавлю в функцию(которая называет кнопку(наполняет ее TextField) и вешает слушатель события) еще один аргумент boolean, он будет отвечать за то, чтоб вешать слушатель события в "общую функцию" или нет. То есть, если мне понадобиться отделить эту кнопку от остальных, просто укажу false и повешу слушатель вручную!

P.S. Спасибо за помощь, реально помогли, да еще и узнал от Вас много чего полезного. =)

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

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

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


 


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


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