Просмотр полной версии : узнать функцию , выполняемую слушателем
Собстна вопрос if(obj.hasEventListener('EF')) obj.removeEventListener('EF' , ??? ); Или такой возможности нету, и нужно просто запоминать метод повешанный?
arguments#callee (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/arguments.html#callee)
arguments#callee
Только внутри обработчика.
nOobCrafter
22.10.2011, 01:36
поищите готовый хендлер-менеджер, есть хорошие готовые реализации.
да я уж лучше сам напишу... мне интересно
Как бы не очень хорошая идея, может пересмотреть архитектуру проекта?
Как обычно, "если Вам кажется, что в ас3 нет чего-то жизненно важного, значит у Вас проблемы с архитектурой")))) Можно узнать, в какой ситуации Вам потребовался доступ к чужим и наверняка приватным методам?
Хм. Всем привет и здрасте :)
Как бы не очень хорошая идея, может пересмотреть архитектуру проекта?
Как обычно, "если Вам кажется, что в ас3 нет чего-то жизненно важного, значит у Вас проблемы с архитектурой")))) Можно узнать, в какой ситуации Вам потребовался доступ к чужим и наверняка приватным методам?
Собственно говоря, у меня уже давно не возникает проблем с реализацией чего либо, и слов в моем лексиконе * пересмотреть архитектуру * остались только в том случае, если я быстро написал код, и у меня еще куча времени для рефракторинга и занятия всякой ерундой, в любом другом случае - я стараюсь писать так - чтобы ниче не пересматривать.
Всвязи с этим, вопрос относился совсем к другому, никакого проекта нет и в помине не было! доступ до чужих протектодов, а зачем? такое бывает нужно? Мне нет.
Я просто подумал , все делают, а не сделать ли мне пул , чтобы махом снимать слушателей со всех объектов проекта аля фулл дестрой. Потом поняв , что простыми средствами АС3 не распологает для создания фреймворка я от вас заодно услышал
поищите готовый хендлер-менеджер
На что сообственно и ответил, уж лучше сам напишу - я люблю все новое, займусь пулом...
доступ до чужих протектодов, а зачем? такое бывает нужно? Мне нет.
1. не protected, a private.
2. Вы желаете получить ссылку на хендлер, являющийся членом другого класса. У меня например хендлеры почти всегда имеют модификатор доступа private.
чтобы махом снимать слушателей со всех объектов проекта аля фулл дестрой.Ничего не перепутали? Чтобы удалить объект, нет никакой нужды удалять в нем ссылки на его слушателей. Это на него надо удалять ссылку, и к листенерам это никакого отношения не имеет.
1. не protected, a private. Ну да, про протектед это я так ляпнул. конечно привейт, я вообще в своих проектах без протектеда обхожусь всегда, ну если только оверрайдить ниче не надо
Wolsh может че и напутал конечно, но я вот о чем
object.addEventListener('some' , func )
GlobalDestroyer.add(someObject)
.....
add some 100 diffrent objects
....
GlobalDestroyer.destroyAll() // сдесь снимаются слушатели с каждого объекта , затем объекты снимаются с дисплей листа
Так чтобы произвести последнее действие нужно знать какие методы держать слушатели, разве нет?
Иначе пришлось бы делать что то в духе add(object , func ) , что неудобно ибо слушателей на 1 объект я могу повесить много, и каждый раз обращаться не хочется, хочется 1 раз добавить объект и все, а глобал в итоге будет знать скока там всего на нем висит.
Или вы о чем то другом ?
in4core, я уже не раз тут высказывался о своем отрицательном отношении ко всяким глобальным штуковинам, так что в такой нелепой на мой взгляд деятельности я Вам не смогу ничем помочь. Поскольку нет нативного способа вытащить ссылку на хендлер (по причине, которую я привел выше – такая возможность означала бы возможность доступа к приватным полям), для такого глобального пула Вам придется сохранять ссылки на хендлеры. Результат очевиден – GlobalDestroyer делает невозможным удаление объектов из памяти, так как хранит на них ссылки. Придумайте название получше, чтобы разрешить этот парадокс)).
Я стараюсь придерживаться архитектуры Master/Slave. У каждого объекта есть только один хозяин, который создал этот объект и имеет с ним контракт. Только хозяин может приказывать объекту и распоряжаться его судьбой, но хорошая новость в том, что хозяин знает все что нужно об этом объекте. Если на объекте висят слушатели, то это хозяин их повесил, и для него не проблема снять все слушатели. Ввод в эту архитектуры какой-то внешней суперсилы типа глобальных Вершителей-Нарушителей, убивает на корню какую-то надежду на контроль, соблюдение контрактов и выполнение ответственностей, и лично мной как допустимое в программировании не рассматривается.
Добавлено через 4 минуты
GlobalDestroyer – отличное название. Он полностью разрушает все связи между органами программы, превращая проект в разлагающийся труп.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.