使用延迟实例化提高启动效率

问题
我们要保证组件仅仅在需要显示在屏幕上的时候才被创建。
解决办法
为容器类设置创建方针队列并且根据需要对每个子组件使用creationIndex。
讨论
Container 类默认情况下仅仅在要显示组件的时候创建它,因为UIComponent 默认的
creationPolicy 值为auto。换句话说,当视图(view)设置成可视的时候,如果还没有创建
该视图,则组件会实例化此视图。creationPolicy 的其他可能值为none,意指,所有组件
将会创建、列队,这里的创建和列队指根据其creationIndex 值进行创建。creationIndex
是以0 起始的顺序数组,组件的子组件会根据这个顺序数组来创建。
<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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值