首页 > 设计 > WEB开发 > 正文

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

2023-08-08 22:33:11
字体:
来源:转载
供稿:网友
3.15.1 问题
我们要保证组件仅仅在需要显示在屏幕上的时候才被创建。
3.15.2 解决办法
为容器类设置创建方针队列并且根据需要对每个子组件使用creationIndex。
3.15.3 讨论
Container 类默认情况下仅仅在要显示组件的时候创建它,因为UIComponent 默认的creationPolicy 值为auto。换句话说,当视图(view)设置成可视的时候,如果还没有创建该视图,则组件会实例化此视图。creationPolicy 的其他可能值为none,意指,所有组件将会创建、列队,这里的创建和列队指根据其creationIndex 值进行创建。creationIndex是以0 起始的顺序数组,组件的子组件会根据这个顺序数组来创建。
+展开
-XML
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxmlheight="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="0alphaTo="1duration="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="viewStackwidth="400height="300"
creationPolicy="noney="100">

<mx:Canvas creationCompleteEffect="{fadeIn}"
creationIndex="0backgroundColor="#0000ff"
id="canvas1">

<mx:LinkButton label="Link Button Number One"/>
</mx:Canvas>
<mx:Canvas creationCompleteEffect="{fadeIn}"
creationIndex="1backgroundColor="#0000ff"
id="canvas2">

<mx:LinkButton label="Link Button Number Two"/>
</mx:Canvas>
<mx:Canvas creationIndex="2id="canvas3"
creationCompleteEffect="{fadeIn}backgroundColor="#0000ff">

<mx:LinkButton label="Link Button Number Three"/>
</mx:Canvas>
<mx:Canvas creationIndex="3id="canvas4"
creationCompleteEffect="{fadeIn}backgroundColor="#0000ff" >

<mx:LinkButton label="Link Button Number Four"/>
</mx:Canvas>
</mx:ViewStack>
</mx:Canvas>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表