Flex: Как компонент узнает, изменился ли один из его стилей? - PullRequest
1 голос
/ 26 июня 2009

Я унаследовал пользовательский компонент от TextField. Компонент должен знать, когда какой-либо из его стилей был изменен во время выполнения через setStyle. Как бы я это сделал? Это, вероятно, очевидно, но я не смог найти событие или подходящий метод для переопределения.

Ответы [ 2 ]

2 голосов
/ 26 июня 2009

Если вы хотите, чтобы текстовое поле хорошо сочеталось с контейнерами и другими компонентами во Flex, вы можете обернуть его в UIComponent или использовать в подклассе интерфейсы IUIComponent и IStyleClient или ISimpleStyleClient ( который UIComponent implements). If you do the component will work with Flex' style system and every time a style changes a method called styleChanged` будет называться:

public function styleChanged(styleProp:String):void

См. http://livedocs.adobe.com/flex/3/langref/mx/core/UIComponent.html#styleChanged()

1 голос
/ 27 июня 2009

метод styleChanged ()

public function styleChanged(styleProp:String):void

Обнаруживает изменения свойств стиля. Когда любое свойство стиля установлено, Flex вызывает метод styleChanged (), передавая ему имя устанавливаемого стиля.

Это расширенный метод, который вы можете переопределить при создании подкласса UIComponent. Когда вы создаете пользовательский компонент, вы можете переопределить метод styleChanged (), чтобы проверить переданное ему имя стиля и соответственно обработать изменение. Это позволяет переопределить поведение по умолчанию для существующего стиля или добавить собственные свойства стиля.

Если вы обрабатываете свойство style, ваше переопределение метода styleChanged () должно вызывать метод invalidateDisplayList (), чтобы заставить Flex выполнить метод updateDisplayList () компонента при следующем обновлении экрана.

Параметры styleProp: String - Имя свойства стиля или значение NULL, если все стили для этого компонента изменились.

...