其實對於這個題目是不恰當的,因爲flex中是沒有頁面這個概念的,頁面在flex裏面其實就是一個個的Canvas,vbox,
hbox等等之類的東西,看到的不同頁面的切換,就是這些元素一層層的堆積,或者替換,但是爲了好理解,還是稱之爲
"頁面跳轉"。其實我們可以對比傳統的C/S開發模式,沒頁面跳轉,只有窗體和元件的顯示和隱藏。
那麼在flex中怎麼實現頁面的跳轉了,我總結了下,主要有一下幾種方式:
1、使用ViewStack組件,具體代碼如下所示:把要跳轉的頁新建成 MXML Component,然後通過 ViewStack 組件把
這些頁包含進來
<mx:ViewStack id="storeViews" width="100%" height="550" creationPolicy="all">
<shouye id="homeView" label="首 頁" showEffect="WipeDown" hideEffect="WipeUp" />
<leixing id="pView" label="模板類型" showEffect="WipeDown" hideEffect="WipeUp" />
<make id="supportView" label="立即製作" showEffect="WipeDown" hideEffect="WipeUp" />
</mx:ViewStack>
然後再用別的組件切換這些頁,比如用 Button
<mx:Button click="storeViews.selectedChild=homeView;" />
2、使用navigateToURL,主要方式如下:var url:String = "http://localhost:8080/Flex_J2eeDemo/bin/Welcome.html";
var request:URLRequest = new URLRequest(url);
navigateToURL(request,"_blank");
但是這個方法很鬱悶就是頁面切換總是彈出新的頁面,而不是隻變換url
3、也是我採用的方法,就是引用flash中的 import flash.external.ExternalInterface 這個接口,他能提供像jsp中window.location.href方法一樣方便,主要代碼爲: ExternalInterface.call("function()
");
4、使用組件技術,把不通的頁面做成component,然後通過TabNavigator等進行切換,通過使用state實現跳轉。效果如圖所示:
最後總結下吧:在Flex中,根本就沒有頁面的概念,有的只有狀態,Flex是通過改變不同的狀態在我們的Application中
實現不同頁面的平滑變換。目前已有人提出使用"棧"的"後進先出"的思想等等方法來實現,當然還有其他的方法,但
是都需要我們的不斷探索、挖掘。