samtiger


          QQ:418148757
          Name:yangchuan
          數據加載中……
          flex 動態創建組件之容器自適應大小

          為了節約swf文件的大小,可以采取動態創建組件的方式,那么動態創建組件就要考慮到組件容器自適應大小。
          比如:
          <s:BorderContainer x="5" y="5" width="100%"  right="5" left="5"
                  autoLayout="true" id="bc">
            <s:layout >
             <s:TileLayout />
            </s:layout>
           </s:BorderContainer>
          我要在上邊這個容器里動態裝入一些組件,很有可能容器的高度不夠裝下多個組件,這個時候,就要讓程序動態的改變容器的大小。
          改變容器的大小可以根據添加的最后一個組件的top和height來決定,那么我們什么時候才能獲取得最后一個組件的大小呢?看下邊的代碼:

          public function init():void{
              
          var user:TblBsUserType = new TblBsUserType();
              
          function initFormItem(label:String,porp:String):FormItem{
               
          var fi:FormItem  =ElementFactory.createFormItem(label,user,porp);
               fi.setStyle(
          "paddingTop",10);
               fi.setStyle(
          "paddingLeft",20);
               bc.addElement(fi);
               
          return fi;
              }

              initFormItem(
          "用戶編碼:","butyId");
              initFormItem(
          "用 戶 名:","butyName");
              initFormItem(
          "用戶密碼:","butyPassword");
              
          var fi:FormItem=initFormItem("用戶角色:","butySate");
            
          //注意下邊這種方式可以設置bc的高度嗎???
               bc.height =fi.top+ fi.height+10;
          }
          如果動態創建組件,那么直接獲取組件的高度是不行的。像上邊這種情況,fi.height的值多數情況是0.
          其實根據flex組件的生命周期,我們知道只有在creationComplete事件的時候,組件才完成了它所有的初始化工作,包括組件的位置,樣式,大小等信息。所以,要想獲得組件的高寬,我們應該在creationComplete事件中來完成這個任務。所以上邊
          bc.height=fi.top+fi.height+10;
          應該修改為:
          fi.addEventListener("creationComplete",function(){
               bc.height =fi.top+ fi.height+10;
              });
          這樣才可以正確設置父容器的高度。


          posted on 2010-04-10 15:59 sam.chuan.yang 閱讀(5882) 評論(0)  編輯  收藏 所屬分類: flex基礎

          主站蜘蛛池模板: 无为县| 卢湾区| 宝应县| 潞西市| 筠连县| 东辽县| 龙门县| 霍林郭勒市| 左权县| 缙云县| 鹰潭市| 安阳市| 革吉县| 栾城县| 岱山县| 新巴尔虎左旗| 龙陵县| 横山县| 钦州市| 宁乡县| 宝应县| 昔阳县| 乡城县| 莱州市| 尉犁县| 津市市| 巨鹿县| 邵东县| 伽师县| 保康县| 牟定县| 汽车| 修水县| 华容县| 遂溪县| 乌兰县| 皮山县| 石泉县| 得荣县| 绥德县| 玉溪市|