Мне недавно нужно было изменить скин на компоненте, основываясь на его родительском состоянии. Я использовал то же решение, что и в HTML, используя CSS. В вашем случае что-то вроде:
s|ButtonBar:minimized s|ButtonBarButton {
skinClass: ClassReference("CustomButtonBarSkin");
}
s|ButtonBarButton {
skinClass: ClassReference("spark.skins.spark.ButtonBarMiddleButtonSkin");
}
: свернуто - это Псевдоселектор (для штатов).
К сожалению, это не похоже на то, что ребенок подхватил (ошибка?), Если я не изменил styleName для родительского элемента при изменении состояния:
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx"
styleName.normal="foo" styleName.minimized="foo"
>
Может быть, есть какой-то недействительный метод, который мне следовало бы вызвать вместо изменения состояния родителей, чтобы заставить ребенка забрать изменение, а просто изменить styleName на что-то фальшивое, сработавшее.
Возможно, это не очень распространенный метод в Flex, поскольку Flex 3 поддерживает только базовые селекторы CSS.