Macromedia flex 2 Manual

Page of 254
Implementing a template component
203
In the second example, you can only assign values of type 
mx.controls.Button
 to it. Each 
Array element is created when the application loads. The following template component 
shows an alternative implementatin of the MyTemplateComponent that restricts the type of 
components to be of type mx.controls.Button:
<?xml version="1.0"?>
<!-- templating/myComponents/MyTemplateComponentDeferredSpecific.mxml -->
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" 
    initialize="init();">
    
    <mx:Script>
        <![CDATA[
        
            import mx.containers.HBox;
            import mx.core.UIComponent;
                
            [InstanceType("mx.controls.Label")]
            public var topRow:IDeferredInstance;
            // Define an Array of deferred properties 
            // for a row of components.
            // Restrict the type of the component 
            // to mx.controls.Button.
            [InstanceType("mx.controls.Button")]
            [ArrayElementType("mx.core.IDeferredInstance")]
            public var bottomRow:Array;
    
            private function init():void {            
                addChild(UIComponent(topRow.getInstance()));
                var controlHBox:HBox = new HBox();
                for (var i:int = 0; i < bottomRow.length; i++)
            controlHBox.addChild(UIComponent(bottomRow[i].getInstance()));
                addChild(controlHBox);
            }
        ]]>
    </mx:Script>
</mx:VBox>