【永恒的瞬間】
          ?Give me hapy ?
          頁面跳轉的實現

          Application xmlns:mx="http://www.macromedia.com/2003/mxml">
          ? <mx:Script>
          ? <![CDATA[
          ??? var url:String = "employee.mxml.swf"
          ?function modifyURL()
          ?{
          ??url = "corporation.mxml.swf";
          ?}
          ? ]]>
          ? </mx:Script>
          ? <mx:VBox label="Sample" minWidth="0" minHeight="0" width="100%" height="100%" marginTop="8" marginLeft="8">
          ?<mx:Loader id="loader" contentPath="{url}" scaleContent="false" showBusyCursor="true"/>
          ? </mx:VBox>
          ? <mx:Button label="Button" click="modifyURL()" />
          </mx:Application>

          這就是我寫的測試例程,三個文件:index.mxml,employee.mxml,corporation.mxml放在web應用的根目錄下就可以了,上面的代碼是index.mxml的代碼。其余兩個文件寫什么就隨便了,只要不是錯的。圖片點擊可在新窗口打開查看

          在上面我介紹了使用Loader組件動態加載Flex頁面的方法,但是后來發現加載的頁面只能在很小的一個范圍內顯示,無論怎么設定Loader的參數都沒有效果,這個問題今天終于搞明白了,下面做一下說明。

            要想讓動態加載進來的頁面滿屏顯示,不但要設定container和Loader組件的長度和寬度的參數,還要設定加載進來的swf的長度和寬度的參數。加載進來的swf存放在Loader組件的content屬性里面,當Loader組件加載完畢會觸發它自己的complete事件,在該事件中我們調整一下swf的長寬參數即可,關鍵代碼如下:

          function initSwf()
          {
          ??? loader.content.width="2000";
          ??? loader.content.height="2000";
          }

          <mx:Loader id="loader" width="100%" height="100%" contentPath="{url}" scaleContent="false" showBusyCursor="true" complete="initSwf()"/>

          彈出窗口的實現以及子父窗口的數據交換

          Flex里使用PopUpManager.createPopUp(parent, class, modal [, initobj, outsideEvents])創建父一個子窗口,該函數的參數說明如下:
          parent 一個引用,引用彈出窗口所在的窗口。
          class 一個引用,引用要創建的對象的類。
          modal 一個布爾值,它表明該窗口是 (true) 否 (false) 是模式的。
          initobj? 一個包含初始化屬性的對象。此參數是可選的。
          outsideEvents? 一個布爾值,指明在用戶單擊窗口以外的區域時是 (true) 否 (false) 觸發事件。此參數是可選的。
          其中,前三個參數是必須的,后兩個是可選的。第二個參數要和你的mxml文件名一致,第三個參數如果選擇是則不允許彈出窗口沒關閉前操作父窗口,反之則允許。

            首先我們創建一個頁面,關鍵代碼如下:
          <mx:Button label="Show Window" click="showWindow(false)" width="150"/>
          <mx:Button label="Show Modal Window" click="showWindow(true)" width="150"/>
          function showWindow(modal)
          {
          ??? var popup = mx.managers.PopUpManager.createPopUp(_root , login , modal, {deferred: true});
          }

            然后我們創建一個TitleWindow,注意雖然也是mxml文件,但是它的定級元素不是Application而是TitleWindow,其余的地方和以前沒什么兩樣了。

            下面介紹子父窗口的數據交換。

            當子窗口被創建的時候父窗口就獲得了一個子窗口的實例,注意我用紅子標出的變量。我們可以用該變量引用子窗口內定義的全局變量,例如我在子窗口中做如下定義:var name:String = "哈哈";。在父窗口中可以使用popup.name引用該變量。

            同樣,在子窗口中我們可以使用"parent"來引用父窗口中定義的變量,例如我在父窗口中定義var age:String="24";。在子窗口中可以使用parent.age引用這個變量。

          日期控件的本地化和輸入的格式化

          Flex里的日期輸入控件默認月份的顯示是英文的,偶的英文很一般,就知道那十二個單詞代表月份,具體是哪個月,要數一下,最近的項目又是對公網用戶服務,什么年齡段的都有,如果讓50歲的人看英文,那結果我都不感想了。

            查閱了Flex的開發文檔,發現修改控件的monthNames屬性就能解決這個問題,這個屬性是個數組,我們做一下的修改。首先在腳本里定義一個數組:var month:Array = new Array("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月");然后我們可以這樣使用控件:<mx:DateField width="180" monthNames="{month}" />,這樣日期就變成了中文。

            日期數據的格式化和上面的做法類似,首先定義格式化函數:
          ?function formatDate(date:Date):String
          ?{
          ??return date.getUTCFullYear() + "-" + ( date.getUTCMonth() + 1 ) + "-" +?( date.getUTCDate() + 1 );
          ?}
          日期控件我們就這樣寫:<mx:DateField width="180" dateFormatter="formatDate" />

            為了方便使用,可以把這個做成自定義組件



          posted on 2007-02-10 12:54 ???MengChuChen 閱讀(820) 評論(0)  編輯  收藏 所屬分類: flex2.0
          主站蜘蛛池模板: 类乌齐县| 新兴县| 明水县| 库伦旗| 奉化市| 陕西省| 平乡县| 栖霞市| 平阴县| 连城县| 仙桃市| 武胜县| 巴塘县| 江北区| 石嘴山市| 莫力| 静海县| 阳原县| 莎车县| 齐齐哈尔市| 九江县| 隆尧县| 靖边县| 项城市| 北票市| 赫章县| 金华市| 博湖县| 龙海市| 子长县| 同江市| 乃东县| 扎鲁特旗| 淮滨县| 岢岚县| 景德镇市| 平乐县| 民乐县| 庆安县| 阳曲县| 临汾市|