Есть два подхода к этому: один использует связывание и проще, другой сложнее, но лучше для производительности.
Использование привязки
Предположим, ваш класс представления выглядит следующим образом:
public class MyClass extends SkinnableComponent {
[Bindable] public var myValue:String;
}
тогда вы можете привязать это значение в вашей шкуре следующим образом:
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Metadata>
[HostComponent("MyClass")]
</fx:Metadata>
<s:Label id="myLabel" text="{hostComponent.myValue}" />
</s:Skin>
Переопределение commitProperties
Предположим, что тот же скин без привязки, затем вы можете установить свойство текста метки с помощью skinpart и переопределить commitProperties в компоненте хоста. Имя скина должно совпадать с идентификатором компонента в скине (в данном случае «myLabel»).
public class MyClass extends SkinnableComponent {
[SkinPart(required="true")]
public var myLabel:Label;
public var myValue:String;
override protected function commitProperties():void {
if (myLabel) myLabel.text = myValue;
super.commitProperties();
}
}
Конечно, вам придется вызывать invalidateProperties()
всякий раз, когда вы хотите применить новое значение (например, в функции установки для myLabel). Также обратите внимание, что «myLabel» больше не нужно привязывать, если только вы не захотите связываться с ним извне.
изменить: какой подход выбрать?
Я только что ответил на вопрос, тесно связанный с этим, в котором я подробно остановлюсь на плюсах и минусах каждого подхода в различных ситуациях. Вы можете найти его здесь: Flex: дополнительная метка в ButtonBarButton