在學習Flex的過程中,你可能會遇到Flex頁面跳轉的問題,本文和大家分享一下,頁面在flex里面其實就是一個個的Canvas,vbox,hbox等等之類的東西,看到的不同頁面的切換,就是這些元素一層層的堆積,或者替換,但是為了好理解,還是稱之為"頁面跳轉"。
Flex頁面跳轉
其實對於這個題目是不恰當的,因為flex中是沒有頁面這個概念的,頁面在flex里面其實就是一個個的Canvas,vbox,hbox等等之類的東西,看到的不同頁面的切換,就是這些元素一層層的堆積,或者替換,但是為了好理解,還是稱之為"頁面跳轉"。其實我們可以對比傳統的C/S開發模式,沒頁面跳轉,只有窗體和元件的顯示和隱藏。
那么怎么實現Flex頁面跳轉呢,我總結了下,主要有一下幾種方式:
1、使用ViewStack組件,具體代碼如下所示:把要跳轉的頁新建成MXMLComponent,然后通過ViewStack組件把
這些頁包含進來
- <mx:ViewStackidmx:ViewStackid="storeViews"width="100%"height="550"creationPolicy="all">
- <shouyeidshouyeid="homeView"label="首頁"showEffect="WipeDown"hideEffect="WipeUp"/>
- <leixingidleixingid="pView"label="模板類型"showEffect="WipeDown"hideEffect="WipeUp"/>
- <makeidmakeid="supportView"label="立即制作"showEffect="WipeDown"hideEffect="WipeUp"/>
- </mx:ViewStack>
然后再用別的組件切換這些頁,比如用Button
- <mx:Buttonclickmx:Buttonclick="storeViews.selectedChild=homeView;"/>
2、使用navigateToURL,主要方式如下:
- varurl:String="http://localhost:8080/Flex_J2eeDemo/bin/Welcome.html";
- varrequest:URLRequest=newURLRequest(url);
- navigateToURL(request,"_blank");
但是這個方法很郁悶就是頁面切換總是彈出新的頁面,而不是只變換url
3、也是我采用的方法,就是引用flash中的importflash.external.ExternalInterface這個接口,他能提供像jsp中window.location.href方法一樣方便,Flex頁面跳轉主要代碼為:
- ExternalInterface.call("function()
- {window.location.href='http://localhost:8080/Flex_J2eeDemo/bin/Welcome.html';}
- ");
4、使用組件技術,把不通的頁面做成component,然后通過TabNavigator等進行切換,通過使用state實現跳轉。
最后總結下吧:在Flex中,根本就沒有頁面的概念,有的只有狀態,Flex是通過改變不同的狀態在我們的Application中實現不同頁面的平滑變換。目前已有人提出使用"棧"的"后進先出"的思想等等方法來實現,當然還有其他的方法,但是都需要我們的不斷探索、挖掘。