![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2011
Сообщений: 26
|
Столкнулся с проблемой получения события изменения переменной. Т.е. когда переменная изменяется нужно чтобы выполнилась функция. Но как это сделать ? Подскажите пожалуйста
|
|
|||||
|
Регистрация: Mar 2011
Сообщений: 29
|
а не проще реализовать через сеттер?
|
|
|||||
|
Регистрация: May 2011
Сообщений: 26
|
Да спасибо , это то, что нужно.
|
|
|||||
|
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Тем не менее? Ситуации разные бывают.
|
|
|||||
|
Когда ты в Bindable указываешь имя события, которое означает изменение свойства, компилятор не создает обертку вокруг этой переменной, в которой бы генерировалось событие. Подразумевается, что ты сам будешь посылать это событие. Этот подход нужен когда ты делаешь, скажем, read - only свойство, которое должно участвовать в биндинге в mxml (в этом случае чтобы все работало придется добавить декларацию события в метаданных класса или mxml компонента) или присутствует какая-то сложная логика обработки событий.
В твоем случае можно сделать вот так. [Bindable] public var status:Boolean; private function changeStateContact(event:PropertyChangeEvent):void{ if (event.property == "status"){ currentState = "online"; } } и где-нибудь в инициализации компонента или в конструкторе класса добавить addEventListener(PropertyChangeEvent.PROPERTY_CHANGE,changeStateContact); |
|
|||||
|
Регистрация: May 2011
Сообщений: 26
|
Спасибо, это очень интересно и очень странно, получается использование [Bindable] только всё усложняет, а предназначено как раз упростить использование сеттеров и геттеров. И не вижу смысла тогда вообще его использовать, тем более, что в flash builder геттеры и сеттеры генерируются одним кликом на нужной переменной.
|
|
|||||
|
Видишь, мета теги Bindable и Event нужны скорее компилятору для генерации кода action script из mxml.
Например, если ты хочешь воткнуть в mxml нечно подобное <mx:Text text="{this.status ? 'статус установлен походу' : 'нихт арбайтен'}"/> и если ты не укажешь на переменной status тег Bindable, компилятор будет ругаться, что не удается засечь изменения переменной. В компилированном коде никаких метаданных нет, там будет обычные команды addEventListener ... dispatchEvent. Есть один интересный проект, который позволяет более удобно использовать деревянный механизм событий flex. Это mate framework. Ты там подключаешь одну библиотечку, создаешь в mxml маппинг где расписывается на какие события каких классов будут подключены какие обработчики, там можно отслеживать изменения свойств объектов. Потом этот маппинг надо вставить где - нибудь в mxml и все. Можно расписать целую цепочку событий при изменении какого-нибудь объекта. Для большого проекта это более удобно, чем вручную набивать кучу геттеров / сеттеров и отлавливать где что не работает Последний раз редактировалось son_of_war; 29.08.2011 в 13:39. |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:01. |
|
|
« Предыдущая тема | Следующая тема » |
|
|