Поскольку никто еще не сказал об этом, я предложу второй подход.
Каждое свойство во Flex Framework будет отправлять свойство с именем типа * свойство * Изменено. где свойство - это имя свойства, которое нужно изменить. Указанные свойства реализованы с использованием методов get set, как уже упоминали другие. Как то так:
private var _myProperty:MyType;
[Bindable(myPropertyChanged)]
public function get myProperty():MyType
{
return _myProperty;
}
public function set myProperty(value:MyType):void
{
_myProperty = value;
dispatchEvent(new Event('myPropertyChanged'));
}
Эти имена событий, указанные в метаданных Bindable, используются для целей привязки. Таким образом, вместо вызова вашего метода внутри набора, вы можете прослушивать событие myPropertyChanged:
component.addEventListener('myPropertyChanged',onMyPropertyChanged)
И в других местах кода:
protected function onMyPropertyChanged(event:Event):void{
// do other processing
}
Это может быть излишним для того, что вы пытаетесь достичь; или нет. Поскольку вы не вдавались в подробности того, что пытались достичь, я не уверен.
Если ваша новая функциональность каким-либо образом связана с жизненным циклом компонента Flex, например при изменении дисплея или размера, вы должны вносить изменения в методы жизненного цикла; не в вашем установленном методе. Примерно так:
private var _myProperty:MyType;
private var _myPropertyChanged:Boolean = false
[Bindable('myPropertyChanged')]
public function get myProperty():MyType
{
return _myProperty;
}
public function set myProperty(value:MyType):void
{
_myProperty = value;
_myPropertyChanged = true;
invalidateProperties();
invalidateDisplayList();
invalidateSize()
invalidateSkinState(); // spark comps only
dispatchEvent(new Event('myPropertyChanged'));
}
Недействительные методы заставят метод жизненного цикла компонента перезапускаться во время следующего события рендеринга, и вы можете использовать подобный код в соответствующем методе:
if(_myPropertyChanged == true){
_myPropertyChanged = false;
// do other processing
}