UIComponent is the core class in Flex 3 for all of the interactive classes. Its class hierarchy is UIComponent < FlexSprite < Sprite < DisplayObjectContainer < InteractiveObject < DisplayObject. A UIComponent can render graphics using the drawing API (from Sprite), have other DisplayObjects as children (from DisplayObjectContainer) and supports mouse and keyboard interaction (from InteractiveObject). But the real work in UIComponent is in basic Flex functionality it implements.
UIComponent defines the core interaction of the Flex 3 component model such as styles, tooltips, validators, states, repeaters, invalidation, measuring, layout, and rendering. The Flash classes such as Sprite do not follow these standards and are not constrained and supported by the Flex component model. This is an important consideration when choosing a base class for custom components.
More to come..
The updateComplete event is dispatched from all UIComponents after they have been through the validation phase in the rendering lifecycle. It is called after the commitProperties(), measure(), and updateDisplayList() methods have been called.
This method will only be called when the component is invalidated. Some components will not be invalidated very often during their lifecycle if their size is constant and they do not perform rendering updates or have their properties changing. Other components, however, will dispatch this event quite often as they respond to user input or other events to update themselves.
The updateComplete event is not actually dispatched from code inside UIComponent, however. It is dispatched from the LayoutManager after it has completed validating the UIComponent.
The event is dispatched during phased and non-phased instantiation after all the phases have been completed in the private function doPhasedInstantiation():
This method is the core lifecycle method for components in Flex. The LayoutManager uses phased instantiation during the initial load of your application and will then disable it after it is complete. You can also see that LayoutManager dispatches this event on itself after all components have been updated (some components such as UIComponent and Container listen for this).
The updateComplete event will also be dispatched for a UIComponent when the validateNow() method is called.