2009-05-06 17 views
1

ある種のメタデータによって、オブジェクトのプロパティを強制的に設定することは可能でしょうか?この場合、MXMLの必須属性ですか?

<ToolTip target="{this}"> 
    <mx:Image source="foo.png" /> 
</ToolTip> 

必要に応じて、ターゲットプロパティがマークにいいだろう:私たちは、次のような1つのまたは複数のプロパティが設定されていない限り、単に何もしない非ビジュアルコンポーネントの数を持っていますそれを決して決して持っていないのは意味がありません。これは大きな問題ではないので、文書化は容易ですが、コンパイラにエラーを教えさせることで少なくとも少々のデバッグラウンドトリップを排除するとよいでしょう。

(この例では)単純にツールチップコンポーネントをUIComponentにして、親プロパティを使用するだけで、このタグが重複しないようにすることができます。しかし、一つには、これは不要なオーバーヘッドを追加し、他のケースでは、それは単に適切ではありません:だから

<Button id="btn" label="Foo" /> 
<ToolTip target="{btn}"> 
    <mx:Image source="foo.png" /> 
</ToolTip> 

、必須MXMLは可能性を属性ですか?

答えて

1

解決策はありますが、メタデータを使用するのと同じくらい単純な方法ではありません。あなたの非ビジュアルコンポーネントにIMXMLObjectインターフェイスを実装させてください。インタフェースには、「初期化された」メソッドが1つしかありません。インターフェイスを実装することで、オブジェクトをMXMLで初期化されたものとして検査できます。

このように...

public function initialized(document:Object, id:String):void 
{ 
    if (target == null) throw new Error("You must supply an argument to target!"); 
} 

チェックの時間をコンパイルあると便利だろうが、これはちゃんと動作します。

+0

お返事ありがとうございます!私はそのインタフェースについての手がかりは持っていませんでしたが、それについて聞いてうれしいです。私たちには、これで恩恵を受けるいくつかのクラスがあります。 コンパイル時のチェックが外れているのは残念ですが、このインターフェイスでは必ず管理します。どうもありがとう! –

+0

質問に続きます:mxmlcコンパイラが生成するプロパティが変更されたときに学習するために実装できる別のインターフェイスはありますか?たとえば、IMXMObjectを実装する非ビジュアルコンポーネントがあり、mxmlドキュメントに追加されたときにタグが "foo"というIDを取得したとします。これは、mxmlの記述からインスタンス化されたオブジェクトへの参照を持つプロパティfooを生成します。今、もし私が新しいインスタンスにその参照を変更すると、私のインスタンスは何とかこれについて知ることができますか?また、私はこのインターフェイスが、実行時のインスタンスではなく、宣言されたインスタンスにのみ適していると考えていますか? –

関連する問題