基本的には、 子(Form、FormItems、Buttons ...)のPanelであるMyView.mxmlファイルがあるとします。Flexコンポーネントを表示する前にイントロスペクションする方法
MyViewを反復して、 の子(型、id ...)に関するすべての情報を表示することは可能ですか?
私はこの機能を持っている場合public function iterateOverChildren(comp:Container):void {
// Get the number of descriptors.
trace("Running iterateOverChildren for " + comp.id);
if (comp != null)
{
var n:int = comp.childDescriptors.length;
for (var i:int = 0; i < n; i++) {
var c:ComponentDescriptor = comp.childDescriptors[i];
var d:Object = c.properties;
// Log ids and types of objects in the Array.
trace(c.id + " is of type " + c.type);
// Log the properties added in the MXML tag of the object.
for (var p:String in d) {
trace("Property: " + p + " : " + d[p]);
}
}
}
}
なぜこの呼び出しは動作しません私のMain.mxmlで
?
var myV = MyView(); iterateOverChildren(myV);
私は addChild(myV)のようなステートメントを追加すると動作します。 iterateOverChildren呼び出しの前に を呼び出します。 (しかし、それは私が欲しいものではありません、私は を表示するためにそれを追加せずに繰り返します)。私はこの http://livedocs.adobe.com/flex/3/html/help.html?content=layoutperformance_06.html
を読んだとき
は、私が「childDescriptors」方法は、ライフサイクルから独立しており、それは私が画面に追加することなく、コンポーネントをイントロスペクトしましょうと思いました。私は何を取りこぼしたか ?表示する前にコンポーネントをイントロスペクションする方法
MyViewのすべての子を正確に反復しようとしているのはなぜですか?探している情報に応じて、複数の方法があります。 – Simon
私は、バックエンドのユーザー役割ごとに各アイテム(子)のメタデータを持っています。以前はすべてのメタデータを持っていましたが、アプリケーションが大きくなり、バックエンドから関連するメタデータだけを取り除きたいと思っています。私はインスタンス化する前にMyViewからこれらすべてのid(メタデータのための私のキー)を見つけるために何かを動的に書く必要があります。私はgetChildrenの結果がcreationPolicyに依存していることを知っています。だから、私がchildDescriptorsについて読んだとき、それは私が探していたもののように見えました。 –