五种方式实现Flex页面跳转

Flex页面跳转
   其实对于这个题目是不恰当的,因为flex中是没有页面这个概念的,页面在flex里面其实就是一个个的Canvas,vbox,hbox等等之类的东西,看到的不同页面的切换,就是这些元素一层层的堆积,或者替换,但是为了好理解,还是称之为"页面跳转"。其实我们可以对比传统的C/S开发模式,没页面跳转,只有窗体和元件的显示和隐藏.

那么怎么实现Flex页面跳转呢,主要有一下几种方式:

1、使用ViewStack组件:

   具体代码如下所示:把要跳转的页新建成MXMLComponent,然后通过ViewStack组件把这些页包含进来 
   <mx:ViewStackidmx:ViewStackid="storeViews"width="100%"height="550"creationPolicy="all">
      <shouyeidshouye id="homeView"label="首页"showEffect="WipeDown"hideEffect="WipeUp"/> 
      <leixingidleixing id="pView"label="模板类型"showEffect="WipeDown"hideEffect="WipeUp"/>
      <makeidmake id="supportView"label="立即制作"showEffect="WipeDown"hideEffect="WipeUp"/> 
   </mx:ViewStack>
   然后再用别的组件切换这些页,比如用Button
   <mx:Buttonclickmx:Buttοnclick="storeViews.selectedChild=homeView;"/>
   分析:这种方式比较简单,但是会存在页面的混乱,为什么混乱呢,因为ViewStack中的对象初始化过一次,在此跳转过来时,会保持上一次的输入或其他的信息,还要想办法恢复原本的状态,很是麻烦.

2、使用navigateToURL:

   主要方式如下:
   var url:String="http://localhost:8080/Flex_J2eeDemo/bin/Welcome.html";
   var request:URLRequest=new URLRequest(url);
   navigateToURL(request,"_blank");
   但是这个方法很郁闷就是页面切换总是弹出新的页面,而不是只变换url.
   分析:
贴的说,会弹出新页面,这是不准确的,懂js的应该知道,可以使用navigateToURL(request,"_top");在本页面跳转,这种通过js跳转的方式比较灵活,缺点就是必须准备相应的页面,而且页面只要跳过去,原来页面(Flex页面)的信息就没有了,如果是简单的实现页面跳转可以使用这种方式,但是只是页面跳转,还需要用Flex吗?

3、引用flash中的importflash.external.ExternalInterface接口:

   它像jsp中window.location.href方法一样方便,Flex页面跳转主要代码为:
   ExternalInterface.call("function(){
                                        window.location.href='http://localhost:8080/Flex_J2eeDemo/bin/Welcome.html';
                                     }");
   分析:这种方式跟第二种,一样的原理,都一样的利弊.当然也存在这样的不好,就是url必须固定,要用改动的话,Flex也要做相应的改动.

4、使用组件技术:

   把不通的页面做成component,然后通过TabNavigator等进行切换,通过使用state实现跳转.
   最后总结:在Flex中,根本就没有页面的概念,有的只有状态,Flex是通过改变不同的状态在我们的Application中实现不同页面的平滑变换。目前已有人提出使用"栈"的"后进先出"的思想等等方法来实现,当然还有其他的方法,但是都需要我们的不断探索、挖掘。
   分析:这种跟第一种是一样的。而且state总觉得比较垃圾的技术,控制起来比较费劲,日常开发中不建议使用,我反正不用。

5、把不同的页面做成Module,然后使用ModuleLoder来进行加载切换.

   分析:上边说了那么多方式的利弊,那什么方式是做好的方式呢?我觉得是这种方式。首先模块开发,无论在java体系还是在C或C++以至任何一种语言都是大力倡导的吧,它的好处当然就不用我多说了,可以多人共享使用此模块;Flex中模块实现页面跳转时,需要把上一个模块卸载,新加载一个模块,就不存在上边1中的烦恼;模块开发还可以通过相互调用,轻松实现信息的相互传递;再有,也不会有2.3中的方法那么不地道,明明是Actionscript,非要去调用javascript来实现...
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值