validateNow() ve Flexu
Vložení komponenty v žádném případě neznamená, že lze ihned přistoupit k jejím vlastnostem, které plynou z její následné vizualizace a to především velikosti. Příkaz trace v tomto případě vrátí nulovou hodnotu:
var newBtn:Button = new Button(); newBtn.label = "Tlačítko"; container.addChild(newBtn); trace("šířka: "+newBtn.height);//vrací nulovou hodnotu
Je to z toho důvodu, že vykreslení a aktualizace vlastností komponenty se děje postupně až při nejbližší "příležitosti" - novému renderování scény. Pomocí metody validateNow() lze spustit okamžitou aktualizaci komponenty, takže pak už je možné pracovat s její velikostí:
var newBtn:Button = new Button(); newBtn.label = "Tlačítko"; container.addChild(newBtn); newBtn.validateNow(); trace("šířka: "+newBtn.height); //vrátí hodnotu 22 //- defaultní u Button komponent
Pokud ovšem potřebujeme pracovat i se změnou velikosti komponenty, do které je například nové tlačítko vloženo, je nutné zavolat metodu validateNow() pro nadřazenou komponentu. Obecně je ale vždy vhodnější volat uvedenou metodu vždy z komponenty, která je nadřazená té, u které chceme okamžitě zjistit nové rozměry. Pro nadřazenou komponentu "container" z příkladu by tedy bylo vhodnější použít příkaz:
var newBtn:Button = new Button(); newBtn.label = "Tlačítko"; container.addChild(newBtn); container.parent.validateNow(); trace("šířka: "+container.height);//vrátí //novou výšku nadřazené komponenty containe