Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   полиморфизм? (http://www.flasher.ru/forum/showthread.php?t=176483)

carrotoff 15.03.2012 13:07

Цитата:

т.е. когда у меня был один хендлер, смотреть в таргет было плохо, а когда я сделал 2 хендлера, проверять таргет 2 раза стало хорошо?
Различие знаете target и currentTarget?

Wolsh 15.03.2012 14:44

Тоже не понял... У Вас теперь подписка И на контейнер, И на каждую кнопку?

anmelegov 15.03.2012 16:12

Цитата:

Сообщение от Wolsh (Сообщение 1069241)
Тоже не понял... У Вас теперь подписка И на контейнер, И на каждую кнопку?

да...

Wolsh 15.03.2012 16:28

Так если каждая кнопка вызывает свой конкретный хендлер, то зачем общий на контейнере?
Либо, если есть Большой Центральный Кликоразделитель, то зачем каждой кнопке свой конкретный слушатель?
Вы уж выберите одно из двух.
У меня в том примере слушатель на контейнер повешен с одной целью - отловить событие клика в фазе захвата и остановить его, пока событие не дошло до кнопок в контейнере.
А если Вы ловите все события контейнера и потом разбираетесь, что за кнопка породила событие и на основе этого решаете, что делать дальше, то кнопкам и не нужны собственные хендлеры. Это и есть та централизация, о которой говорил Мук. Надо только иметь систему отождествления кнопка-действие. Если отказались от колбэков, то надо либо завести словарь (Dictionary) в котором привязать каждой кнопке нужное действие (если сами действия принципиально разные) или привязать каждой кнопке какой-то параметр, который будет передаваться функции (если действия одинаковые, то есть один метод с разными параметрами).. Либо не заводить Словарь а просто хранить в кнопках этот параметр в поле класса кнопки.

anmelegov 15.03.2012 16:36

Цитата:

то зачем общий на контейнере?
там другие фичи висят.. долго объяснять в общем так надо
Цитата:

просто хранить в кнопках этот параметр в поле класса кнопки.
ну т.е. как у меня было сделано до этого да?
попробую для разнообразия сделать со словарем еще

Wolsh 15.03.2012 17:00

Цитата:

ну т.е. как у меня было сделано до этого да?
Ну нет, у Вас хранился коллбэк, сам метод. Во-первых, это нифига не простой тип Function)) Хранилась ссылка. А здесь предполагается хранить простой тип, uint или String, просто идентификатор. Во-вторых, у Вас нарушался ООП, можно было подсунуть любой метод, и это вызвало бы ошибку, если бы метод не соответствовал правилам - например, требовал аргументов. Типизировать функцию нельзя, а идентификатор - запросто.
Кроме того, если действия одинаковые, например trace("21"), trace("22") и т.п., то можно просто хранить этот параметр (21, 22) в самой кнопке и иметь один метод, который сделает трейс, а не столько же методов, сколько есть кнопок)))). В общем хендлере получаете ссылку на кнопку (target) и спрашиваете у нее этот параметр. Передаете его в метод.


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

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