0

Flexでは、アプリケーション全体で使用されるUIコンポーネントのディクショナリを保持する変数を作成したいと思います。理想的には、idのコンポーネントを返すアプリケーションコンポーネントに関数があります。

public function getComponent4Id(id:String):UIComponent {}

次に、次の行を使用してコンポーネントにアクセスします。

var myComponent:UIComponent = FlexGlobals.topLevelApplication.getComponent4Id("someId");

ここで、唯一の問題は次のとおりです。返されるコンポーネントを読み取り専用にします。アプリケーションの隅々からmyComponent
のいくつかのプロパティを読み取ることは非常に便利ですが、開発者がそれを悪用してmyComponentを変更することは望ましくありません。

myComponentのコピーを返すことは可能ですか?それとも、どういうわけか読み取り専用にすることは可能ですか?

4

1 に答える 1

3

説明した状況では、読み取り専用コンポーネントを取得することはできません。

setメソッドなしでgetメソッドを実装することにより、読み取り専用変数を作成できます。このようなもの:

public var get myValue():UIComponent{
 return UIComponent;
}

これにより、コンポーネントからUIComponentインスタンスmyValueを取得できます。しかし、それを設定することはできません。

ただし、これらのプロパティも読み取り専用として実装されていない限り、返されたUIComponentのプロパティを変更することを妨げることはありません。

名前で子コンポーネントを取得するためのメソッドgetChildByName()がすでに存在することを追加します。親のインスタンスがある場合は、これを使用して子にアクセスできます。

とはいえ、あなたが何を達成したいのかを完全に理解しているとは言えません。この機能で。

于 2012-09-23T02:38:35.190 に答える