Managing Object Creation Policies (Preloading Objects)

By default, components added by nonbase states aren’t instantiated until the state is first requested. The MXML in Example 12-16 illustrates this. The trace() statement outputs null because button is not yet defined when the application first starts.

Example 12-16. Understanding object creation policies: Default policy

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
initialize="initializeHandler(event)">

    <mx:Script>
        <![CDATA[

            private function initializeHandler(event:Event):void {
                trace(button);
            }

        ]]>
    </mx:Script>

    <mx:states>
        <mx:State name="example">
            <mx:AddChild>
                <mx:Button id="button" label="Example" />
            </mx:AddChild>
        </mx:State>
    </mx:states>

</mx:Application>

However, you can manage when components added by states are instantiated using a creation policy. The default creation policy setting is auto, which means the component is instantiated when the state is first requested. You can set creation policies for each added component using the creationPolicy attribute of the <mx:AddChild> tag, or the creationPolicy property of the AddChild class. The possible values are auto (default), all, and none.

When you set the creation policy of an added component to all, the component is instantiated when the application first starts. The MXML in Example 12-17 illustrates how that works. Because the creation policy of the button is now set to all, the trace() statement outputs ...

Get Programming Flex 3 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.