![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Как в рантайме создать поля геттеры и сеттеры ?
|
|
|||||
|
Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
|
addProperty(prop:String, getFunc:Function, setFunc:Function) : Boolean ?
Только придётся от Proxy наследоваться...
__________________
Верить никому нельзя. Мне - можно. :) |
|
|||||
|
Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
|
Если без Proxy, у динамических классов всё созданное паблик будет...
__________________
Верить никому нельзя. Мне - можно. :) |
|
|||||
|
Странно что addProperty не задокументировано.... Да нашёл , merlin Twi переводил tip с использованием этой функции.
Из каких соображений в AS 3.0 все классы не наследуют Proxy ? Это бы добавило гибкости. Может Proxy ресурсоёмок? |
|
|||||
|
Хочу создавать сеттеры в рантайме, как это было в АС 1/2. У класса Object было addProperty , а теперь нужно что-то вымудрять через Proxy. Может кто-то нашёл наиболее рациональный выход?
Зачем ? О... это долгая история ![]() |
|
|||||
|
Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
|
Цитата:
![]()
__________________
Верить никому нельзя. Мне - можно. :) |
|
|||||
|
Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
|
Цитата:
__________________
Верить никому нельзя. Мне - можно. :) |
|
|||||
|
Цитата:
__________________
33 коровы |
|
|||||
|
Цитата:
То есть класс ингибитор имеет статичный метод inhibit который в любом объекте замедляет изменение любого свойства. В моём примере первый аргумент - объект, второй - свойство в этом объекте, третий - функция ингибирования, которая будет вызываться по enterFrame, остальные аргументы - какие-топараметры для функции ингибирования. После этого, свойство х плавно меняет своё значение, от кадра к кадру. Достаточно один раз написать функцию ингибирования, простота написания кода существенно возрастёт. Но, вот в чём проблема. На мой объект anyObject уже имеется туча ссылок, этот объект много где юзается. То есть изменение свойства х, из любой точки программы долно вызвать плавное изменение х. Самым разумным ,на мой взягляд, выходом было сделать следующее: после вызова метода, класс inhibitor копирует геттер и сеттер свойства х куда-нибудь, например в геттеры и сеттеры свойства temp (что бы можно было потом его менять), потом ингибитор вставляет на место свойства х геттеры и сеттеры, которые вызывают функцию ингибирования, которая в свою очередь плавно меняет свойство temp. Бредятина конечно, но на АС 1/2 это реализовать несложно, а вот с тройкой проблемы. Создание нового прокси объекта-обёртки, который будет перехватывать свойства, не очень удачный выход. Т.к. старые ссылки на объект будут по-прежнему менять оригинальное свойство скачкообразно. Последний раз редактировалось miramax; 11.11.2006 в 13:30. |
|
|||||
|
т.е. ты хочешь иметь возможность подписывать/отписывать на inhibit любое свойство любого объекта ?
не дешевле будет продублировать нужные свойства нужных классов(так ли их много?) уже с этим функционалом и там где надо пользовать их, где не надо - 'родные' ? |
![]() |
![]() |
Часовой пояс GMT +4, время: 15:58. |
|
|
« Предыдущая тема | Следующая тема » |
|
|