main でカスタムスキンを使用する Flex 4.6 内でアプリケーションを構築しています<s:Application>
。このスキンには、メイン アプリケーションからアクセスしたいいくつかのコンポーネントが含まれています。
を使用してみthis.skin.getChildByName("<name of component within skin>")
ましたが、実行時エラーが発生しました。
メイン アプリケーションからスキン内のコンポーネントにアクセスするにはどうすればよいですか?
main でカスタムスキンを使用する Flex 4.6 内でアプリケーションを構築しています<s:Application>
。このスキンには、メイン アプリケーションからアクセスしたいいくつかのコンポーネントが含まれています。
を使用してみthis.skin.getChildByName("<name of component within skin>")
ましたが、実行時エラーが発生しました。
メイン アプリケーションからスキン内のコンポーネントにアクセスするにはどうすればよいですか?
スキンのコンポーネントが skinPart として公開されていない場合、そのようにアクセスすることはカプセル化ルールに違反し、通常、ビジネス ロジックをビジュアル表示から分離する Flex Skinning Spark モデルの利点を無効にします。
つまり、次のようなものを使用してスキンにアクセスできます。
// for a SparkSkin
var skinAsSparkSkin : SparkSkin = this.skin as SparkSkin;
// for a MobileSkin
var skinAsMobileSkin : MobileSkin = this.skin as MobileSkin;
// for your custom skin type
var skinAsCustomSkin : MyCustomSkin = this.skin as MyCustomSkin;
スキンにアクセスできるようになったら、次のような方法でスキン内のパブリック変数にアクセスできます。
trace(skinAsSparkSkin.myVaribleInsideSkin);
スキン パーツではない MXML のスキンで作成するコンポーネントの場合、それらはパブリック変数になり、MXML コードで定義した ID でアクセスできます。
スキン:
<s:List id="myList"/>
コンポーネント クラス:
trace(skinAsSparkSkin.myList);