最近、親の状態に基づいてコンポーネントのスキンを変更する必要がありました。CSS を使用して、HTML で使用したのと同じソリューションを使用しました。あなたの場合、次のようなものです:
s|ButtonBar:minimized s|ButtonBarButton {
skinClass: ClassReference("CustomButtonBarSkin");
}
s|ButtonBarButton {
skinClass: ClassReference("spark.skins.spark.ButtonBarMiddleButtonSkin");
}
:minimizedは疑似セレクター(状態用) です。
残念ながら、状態の変更時に親要素の 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 3 では基本的な CSS セレクターしかサポートされていなかったため、これは Flex で広く使用されている手法ではない可能性があります。