![]() |
полиморфизм?
вот допустим у меня есть кастомные кнопки на панельке, каждая из которых должна запускать разную функцию. Можно ли как-то сделать оверрайд метода в потомке класса Кнопка не создавая для каждой кнопки отдельный класс?
что-то типа такого Код AS1/AS2:
всё нашёл в книжке... надо использовать prototype .... тема закрыта |
Публичная переменная click:Function?
Код AS3:
|
Цитата:
|
тут вообще-то AS3, а не AS2.
если AS3(FD),то Код AS3:
|
А где Вы AS2 увидели?
|
я просто начал изучение AS сразу с AS3 и сразу в FD...
и не знаю таких конструкций: Код AS3:
Это и подтолкнуло на мысль что речь идёт об AS2.. |
Цитата:
|
Код AS3:
Код AS3:
|
Ой, да. Ссылка же.
|
создавать слушатель событий для каждой кнопки это по индийски, у меня 1 слушатель висит на стейдже, он смотрит во что я кликаю и делает нужные действия... для кнопок отдельный класс в котором просто есть пустой метод action() который я инициализирую кастомной функцией уже в другом классе
|
Цитата:
|
Цитата:
Код AS1/AS2:
|
Ну чушь так чушь. Спорить не хочется.
Могу сказать, что события - куда более гибкий способ. А уж тем более prototype - это вообще жесть из AS2. |
я не использую prototype
|
Цитата:
Цитата:
Действительно, что делать если 128 обьектов не только кнопки, а разные? При нажатии на любой выполняется разная задача. Вешать 128 слушателей? Так действительно делают? |
Цитата:
|
не знаю как работают слушатели событий на низком уровне, но подозреваю что это не одно и то же =)
Добавлено через 4 минуты да и вообще если у меня 1 слушатель, я могу его в любой момент удалить, а потом при необходимости включить снова, в вашем подходе мне бы пришлось проходить двумерные массивы и выключать каждый по отдельности либо накрывать всё спрайтом, чтобы он перекрывал все интерфейсный элементы, а костыли я не люблю Добавлено через 5 минут то как реализовано у меня больше похоже на полиморфизм Добавлено через 8 минут я только что ради интереса открыл книжку мука и в ней написано что вы не правы на странице 564 Добавлено через 10 минут со страницы 574 читайте подробнее |
Цитата:
|
пишут что надо использовать централизованный подход при диспетчеризации событий... могу скинуть книгу если интересно, я сам её только сегодня первый раз увидел, нашел много ответов на свои вопросы =)
|
Цитата:
|
Цитата:
|
Код AS3:
Код AS3:
|
Самый красивый довод – про моментальное отключение всех кнопок удалением одного слушателя – зиждется на Вашем слабом знании Событийной модели. Я не знаю, кто Вас научил таким ужасным костылям – накрывать спрайтом, пробегаться по массивам. Есть простой кошерный метод stopPropagation(). В любой момент Вы можете полностью отрубить любому контейнеру захват мыши, и все его обитатели станут глухими.
Надеюсь, концепция что все обитатели должны сидеть в контейнере, а не разгуливать по стейджу, у Вас не вызывает возражений? Тогда пример: Код AS3:
Ну и не забываем про старый добрый Код AS3:
Котяра, хитрость в том что кнопка не решает, а только хранит колбэк. Если бы решала, был бы полный атас. А так сохраняется видимость контроля за происходящим – после клика только Сам Главный решает, вызывать колбэк или нет. Ну и опять же, озвученный выше довод про моментальное отключение/включение всех кнопок. Если они будут "нажиматься" сами, то автор видит лишь два костыля как остановить это. |
я уже давно сделал правильно и у меня всё работает без единого костыля... ваши доводы в пользу использования тысячи слушателей событий противоречат рекомендациям коллина мука. Я привел страницы где черным по белому написано что я прав, а вы нет.
Добавлено через 5 минут Цитата:
Добавлено через 8 минут Цитата:
Добавлено через 10 минут Цитата:
|
Цитата:
И да, Мук не забор, но все же... |
Оффтоп: не надо цитировать кучу.
Если хотите ответить - просто отвечайте. Либо конкретику цитируйте. Всем и так понятно что вы отвечаете на вышестоящие топики. По теме: почитайте про паттерны, ну и про MVC. Здесь на форуме много. Потом приходите. |
Цитата:
|
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
Добавлено через 2 минуты Цитата:
|
Цитата:
Добавлено через 2 минуты Цитата:
|
Предлагаю пользоваться событиями.
|
Цитата:
|
Может быть конечно я не прав, но по моему предложенная вами реализация имеет ту же суть, да и принцип действия что и механизм событий, так зачем дописывать еще один к уже имеющемуся?
|
Цитата:
|
Цитата:
|
Суть предложенного состоит в том, что кнопка лишь сигнализирует, что на нее нажали (или навели, или еще что-то). А обработка этого события лежит в другом модуле, который ответственнен за логику приложения, а не его внешний вид.
Вам же не говорят что Ваш подход не работает вовсе. Он работает - это очевидно. Другое дело, что как только вы напишете в проекте ну, скажем, тысяч 10 строк кода, Вы точно столкнетесь со всеми неудобствами такого подхода. Так что - удачи, все приходит с опытом. |
26 к строк было, не считая полуавтоматических с ресурсами. В 95+% случаев по нажатию удобно было тупо вызывать функцию.
А у вас в каком проценте случаев на кнопке более одного обработчика? |
Цитата:
|
Цитата:
Еще раз - дело в том что у Вас кнопка сама что-то вызывает. В предлагаемом варианте решение о том, нужно что-то вызвать или нет принимается не в кнопке, а в контроллере. Цитата:
ЗЫ Я могу сказать только одно - я наелся коллбеками больше некуда. Факт передачи функции куда-либо по ссылке вызывает у меня тремор и желание напиться. Потому что эта передача может происходить тут, а может здесь, а может еще вооон-там. И привет - ищем по проекту что же мы можем куда-то передать и где. Я понимаю, что нормальные пацаны юзают дебагер, так что у них таких проблем нет. У меня их тоже нет, потому что у меня кнопка (и не-кнопка тоже) отсылает события. |
Цитата:
Хотя конечно даже моя допустимая правота, не отвечает на вопрос зачем плодить сущности и изобретать велосипеды. |
| Часовой пояс GMT +4, время: 00:01. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.