1

main でカスタムスキンを使用する Flex 4.6 内でアプリケーションを構築しています<s:Application>。このスキンには、メイン アプリケーションからアクセスしたいいくつかのコンポーネントが含まれています。

を使用してみthis.skin.getChildByName("<name of component within skin>")ましたが、実行時エラーが発生しました。

メイン アプリケーションからスキン内のコンポーネントにアクセスするにはどうすればよいですか?

4

1 に答える 1

2

スキンのコンポーネントが 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);
于 2012-07-18T21:27:21.877 に答える