3.15使用延迟实例化提高启动效率
发表时间:十二月. 18, 2009 | 作者: Freddie | 类别:Flex, flex cookbook
问题
我们要保证组件仅仅在需要显示在屏幕上的时候才被创建。
Container 类默认情况下仅仅在要显示组件的时候创建它,因为UIComponent 默认的
creationPolicy 值为auto。换句话说,当视图(view)设置成可视的时候,如果还没有创建
该视图,则组件会实例化此视图
code:
<mx:Canvas xmlns:mx=”http://www.adobe.com/2006/mxml”
height=”600″
width=”600″>
<mx:Script>
<![CDATA[
private function changeViewStackCreation():void
{
viewStack.creationPolicy=(comboBox.selectedItem as String);
viewStack.createComponentsFromDescriptors(true);
}
private function changeViewStack():void
{
viewStack.selectedIndex=comboBoxChangeIndex.selectedIndex;
}
]]>
</mx:Script>
<mx:Fade alphaFrom=”0″
alphaTo=”1″
duration=”4000″
id=”fadeIn”/>
<mx:ComboBox dataProvider=”{['none', 'all', 'queued',
'auto']}”
change=”changeViewStackCreation()”
id=”comboBox”/>
<mx:ComboBox dataProvider=”{[1, 2, 3, 4]}”
x=”150″
change=”changeViewStack()”
id=”comboBoxChangeIndex”/>
<mx:ViewStack id=”viewStack”
width=”400″
height=”300″
creationPolicy=”none”
y=”100″>
<mx:Canvas creationCompleteEffect=”{fadeIn}”
creationIndex=”0″
backgroundColor=”#0000ff”
id=”canvas1″>
<mx:LinkButton label=”Link Button Number One”/>
</mx:Canvas>
<mx:Canvas creationCompleteEffect=”{fadeIn}”
creationIndex=”1″
backgroundColor=”#0000ff”
id=”canvas2″>
<mx:LinkButton label=”Link Button Number Two”/>
</mx:Canvas>
<mx:Canvas creationIndex=”2″
id=”canvas3″
creationCompleteEffect=”{fadeIn}”
backgroundColor=”#0000ff”>
<mx:LinkButton label=”Link Button Number Three”/>
</mx:Canvas>
<mx:Canvas creationIndex=”3″
id=”canvas4″
creationCompleteEffect=”{fadeIn}”
backgroundColor=”#0000ff”>
<mx:LinkButton label=”Link Button Number Four”/>
</mx:Canvas>
</mx:ViewStack>
</mx:Canvas>
creationPolicy一共有四个属性:none all queued auto
none 是不创建
all是全部创建, (个人觉得,如果你有一个很漂亮的preloading,可以用这个属性全部加载,以免用户在进入系统后再等着加载)
auto 默认值,显示时创建。

