![]() |
Определить наличие свойства/метода
Как определить наличие у абстрактного экземпляра класса определенного свойства (свойство как таковое и/или геттер/сеттер)? Мысли на этот счет есть, но все кажется сильно кривым и "закостылистым"... Спасибо.
|
hasOwnProperty?
|
Что значит у абстрактного экземпляра класса?
|
in, не?
У абстрактного значит у любого? Ибо абстрактных классов в AS3 нет. |
PainKiller, т.е. не имеет значения экземпляр какого именно класса мы исследуем.
GBee, Inet_PC, да, но такие способы вернут true даже если доступен только геттер и, соответственно, вернут false, если доступен только сеттер. |
тогда describeType Вам в помощь.
|
Inet_PC, сам describeType такую проблему не решит, но вкупе с одним из вышеприведенных способов... Спасибо за хорошую мысль.
|
Пардон конечно, но на кой хрен это надо?
|
Psycho Tiger, есть желание управлять изначально неизвестным свойством объекта. Создаю "скроллер". А вот что в качестве "скроллируемого" значения он будет "кушать" - изменение значения x, y, rotation или someValue - его интересовать не должно.
|
Ну да.
Но чего ты добьешься? Смотри: Код AS3:
Это... не то, ради чего стоит стараться. Или я не так понял задачу? |
Вот что я имел ввиду. Если бы все было так просто и очевидно... Но по ходу без небольшого костыля - никуда.
Код AS3:
|
Может тут уместнее заюзать интерфейс? Универсальность в какой-то мере до добра не доведет.
|
GBee, а каким образом в данном случае поможет интерфейс?
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Я лично не очень понял, что Вы хотите в итоге. Но костыль это еще пол беды, вторая половина, это то, что describeType жутко медленный (оно и понятно). Во флексе даже кэш для этой функции есть, я бы не стал использовать ее без явной на это необходимости.
|
Цитата:
Inet_PC, то что медленный - знаю, но с другой стороны на один скролл он будет использоваться только один раз, что я считаю допустимым. Ну и если Bgg (или кто-нибудь другой) предложит достойную альтернативу - буду только рад воспользоваться хорошей идеей. |
@TanaTiX, это понятно.
Приведи примеры где ты это будешь использовать, чтобы понять, в чем выгода. |
как вариант
myScroller = new MyScroller(target:IScrollable, ...arg) public interface IScrollable { function get height():Number; function set height(value:Number):void; ...... } Тоесть объект который вы отдаете скроллеру должен имплементить этот интерфейс, и значит должен иметь сеттер/геттер height например |
3p.station, Psycho Tiger, хочется немного другого. Хочется не создавать n-е количество разных скроллов (вертикальных, горизонтальных, радиальных и еще хз каких придумает воспаленный мозг). Хочется задать базовый объект (ползунок), его минимальное и максимальное значение и свойство. Т.е. для горизонтального скролла это примерно должно выглядеть так:
Код AS3:
А то что касается определения определения наличия свойства - это для защиты от дурака. |
Цитата:
Код AS3:
|
Bgg, при таком раскладе при добавлении к.-л. свойства мне(или еще хз кому) каждый раз придется лазить в базовый класс, дописывать константы и условия. Т.е. с инкапсуляцией выходит небольшая накладочка.
...а может я и перегибаю палку. |
Имхо перегибаете. Чем класс проще, тем лучше. Но если все равно дико хочется универсальности, то я бы не писал статичный метод проверки свойства, а написал бы обработчик ошибок на момент скролла:
Код AS3:
ps. и да, бросайте заботиться о дураках. |
@TanaTiX, а почему не сделать чтобы скроллер диспатчил событие ScrollEvent.CHANGE с параметром position, и в обработчике уже менять свойство какого-то объекта?
Скроллер по-моему не должен в принципе знать что за объект и какие его свойства он изменяет. Он должен только выдавать значения в заданном диапазоне, а что делать с этими значениями - это его не касается. |
Цитата:
Цитата:
|
я понял..сколько людей столько и разных скролов.)
у меня он просто диспатчит CHANGE и все..к кому и как применять в хендлере - не его забота. т.е. скролл и таргет одного поля ягоды. |
Цитата:
|
Цитата:
smithy, скроллер не является DisplayObject-ом. Это что-то типа "контроллера", которому "скармливаются" различные объекты (в т.ч. DisplayObject-ы) и параметры. Таким образом я смогу собрать любой скроллер из любых объектов (созданных программно, нарисованных в IDE и пр.) |
Цитата:
new Sprite().value даст нативное RTE. Всё, чего ты добьешься - поменяешь текст RTE. А если класс dynamic? |
Psycho Tiger, да, соглашусь, такая мысля уже закрадывалась, но, видать, не сильно настойчиво. Может быть тогда оставлю только для дебага (чтоб себе, дураку, понятней было :away:), а из релиза нафиг! В общем посмотрим.
|
| Часовой пояс GMT +4, время: 06:31. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.