FLEX內的contains容器都會有一個屬性 creationPolicy可以控制其內容創建的時間
一般預設值都是auto
也就是當這個物件第一次被顯示時創建
這樣會有較好的使用者體驗
不過當我們有時使用viewStack
可能當我們在第一頁時
就必須指定第二或第三頁的label內容資料
那我們就必須把 creationPolicy設為all
creationPolicy總共有四種可能值
1. <strong>all :</strong> 產生物件時便產生所有的內部元件(即使它還沒有被顯示)
2. <strong>auto:</strong> 被顯示在畫面上時才創建物件
3. <strong>none:</strong> 永不自動創建
當creationPolicy屬性的值為none時,應該明確地指定容器的長和寬。正常情況下,Flex會自動對容器進行比例縮放以使它能夠容納子實例,但因為creationPolicy屬性的值設為none,開始時沒有實例化容器內的子實例,要進行比例縮放是不可能的。如果你沒有明確地調整容器的大小,直到容器內的子實例被實例化後才會自動調整大小以容納子實例。要手動實例化組件,請使用createComponentsFromDescriptors()方法。
4. queued: 根據creationIndex的順序來產生內容物件
比較需要注意的是 若今天我們照下面這樣寫
希望能夠當顯示getItemListShowPlace時馬上就設定testItem這個label的文字是什麼
一樣會產生testItem是null無法指定其值的錯誤 因為當物件是單一視圖時,all和auto是一樣的
1 2 3 4 5 6 7 8 |
<mx:TabNavigator width="100%" height="100%" id="getItemListShowPlace" > <mx:Canvas label="第一頁" width="100%" height="100%""/> <mx:Canvas label="第二頁" width="100%" height="100%"/> <mx:Canvas label="第三頁" width="100%" height="100%"/> <mx:Canvas label="第四頁" width="100%" height="100%" creationPolicy="all"> <mx:Label id="testItem"/> </mx:Canvas> </mx:TabNavigator> |
正確的使用方式應如下
1 2 3 4 5 6 7 8 |
<mx:TabNavigator width="100%" height="100%" id="getItemListShowPlace" creationPolicy="all" > <mx:Canvas label="第一頁" width="100%" height="100%""/> <mx:Canvas label="第二頁" width="100%" height="100%"/> <mx:Canvas label="第三頁" width="100%" height="100%"/> <mx:Canvas label="第四頁" width="100%" height="100%"> <mx:Label id="testItem"/> </mx:Canvas> </mx:TabNavigator> |