Предположим, у вас есть файл MyView.mxml, который по сути представляет собой панель с несколькими дочерними элементами (Form, FormItems, Buttons ...).
Можно ли перебрать MyView и получить всю информацию о его дочерних элементах (типах, идентификаторах ...) до его отображения.
В моем Main.mxml, если у меня есть эта функция
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]);
}
}
}
}
Почему этот звонок не работает?
var myV = MyView (); iterateOverChildren (myV);
Это работает, только если я добавлю такой оператор, как addChild (myV); перед вызовом iterateOverChildren. (Но это не то, что я хочу, я хочу повторять описания, не добавляя их для отображения).
Когда я прочитал это http://livedocs.adobe.com/flex/3/html/help.html?content=layoutperformance_06.html.
Я думал, что метод «childDescriptors» не зависит от жизненного цикла, он позволит мне изучить компонент, не добавляя его для отображения. Что я пропустил ? Как мне изучить компонент перед отображением.
var myV = MyView();
, вы получаете реальный объект, не имеющий дочерних дескрипторов. 25.08.2009