Flex 页面跳转或弹出总结

Flex中实现页面的跳转以下几种方式: 1、使用ViewStack组件,把要跳转的页新建成 MXML Component,然后 ...

Flex关于页面跳转的方式,我是直接贴的,博客中很多很多,我只是贴过来然后结合实际应用中分析下那种方式最好。

Flex中实现页面的跳转以下几种方式:

1、使用ViewStack组件,把要跳转的页新建成 MXML Component,然后通过 ViewStack 组件把这些页包含进来,然后再通过改变ViewStack的selectedItem或者electedChild来切换这些页。

分析:这种方式比较简单,但是会存在页面的混乱,为什么混乱呢,因为ViewStack中的对象初始化过一次,在此跳转过来时,会保持上一次的输入或其他的信息,还要想办法恢复原本的状态,很是麻烦。

[http://blog.csdn.net/cn_gaowei]

2、使用navigateToURL,主要方式如下:

var url:String = "http://localhost:8080/Flex_Java_Demo/welcome.html";
var request:URLRequest = new URLRequest(url);
navigateToURL(request,"_blank");

这个方法页面切换时会弹出新的页面,而不是只变换 url

分析:贴的说,会弹出新页面,这是不准确的,懂js的应该知道,可以使用navigateToURL(request,"_top");在本页面跳转,这种通过js跳转的方式比较灵活,缺点就是必须准备相应的页面,而且页面只要跳过去,原来页面(Flex页面)的信息就没有了,如果是简单的实现页面跳转可以使用这种方式,但是只是页面跳转,还需要用Flex吗?

[http://blog.csdn.net/cn_gaowei]

3、引用flash中的 import flash.external.ExternalInterface 这个接口,

它能提供像jsp中window.location.href方法一样方便,主要代码为:
ExternalInterface.call("function(){window.location.href=
'http://localhost:8080/Flex_J2eeDemo/bin/Welcome.html';}");

分析:这种方式跟第二种,一样的原理,都一样的利弊。当然也存在这样的不好,就是url必须固定,要用改动的话,Flex也要做相应的改动。

[http://blog.csdn.net/cn_gaowei]

4、使用组件技术,把不同的页面做成component,然后通过TabNavigator等进行切换,通过使用state实现跳转。

分析:这种跟第一种是一样的。而且state总觉得比较垃圾的技术,控制起来比较费劲,日常开发中不建议使用,我反正不用。

[http://blog.csdn.net/cn_gaowei]

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

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

 

 

1、ViewStack,TabNavigator之类的组件

  把页面做成Component然后用ViewStack包含进来,实现页面之间的切换,而HTML并没有刷新,ViewStack只是实现了flash里面的页面切换。

 

  1. <mx:ViewStack id="storeViews" width="100%" height="550" creationPolicy="all">  
  2.    <shouye id="page1"  label="page1" showEffect="WipeDown" hideEffect="WipeUp"  />  
  3.    <leixing id="page2"    label="page2"  showEffect="WipeDown" hideEffect="WipeUp" />  
  4.    <make id="page3" label="page3" showEffect="WipeDown" hideEffect="WipeUp"  />  
  5. </mx:ViewStack>  
  6. <!-- 然后再用别的组件切换这些页,比如用 Button -->  
  7. <mx:Button click="storeViews.selectedChild=page1;"  />    

<mx:ViewStack id="storeViews" width="100%" height="550" creationPolicy="all"> <shouye id="page1" label="page1" showEffect="WipeDown" hideEffect="WipeUp" /> <leixing id="page2" label="page2" showEffect="WipeDown" hideEffect="WipeUp" /> <make id="page3" label="page3" showEffect="WipeDown" hideEffect="WipeUp" /> </mx:ViewStack> <!-- 然后再用别的组件切换这些页,比如用 Button --> <mx:Button click="storeViews.selectedChild=page1;" />

 

2、flash.net.navigateToURL直接页面重定向

 


navigateToURL (request:URLRequest, window:String = null):void
在包含 Flash Player 容器的应用程序(通常是一个浏览器)中,打开或替换一个窗口。

 

[javascript]
  1. var  
  2. request:URLRequest = new URLRequest("163.com");  
  3. navigateToURL(request,"_blank");  

var request:URLRequest = new URLRequest("163.com"); navigateToURL(request,"_blank");

 

 

3、flash.external.ExternalInterface调用外部 API

 

 
call (functionName:String, ... arguments):*
[] 调用由 Flash Player 容器公开的函数,不传递参数或传递多个参数。
[javascript]
  1. ExternalInterface.call("  
  2. function(){  
  3. window.location.href='http://163.com';  
  4. }");   
ExternalInterface.call(" function(){ window.location.href='http://163.com'; }");

4、弹出页面类mx.managers.PopUpManager之类
用PopUpManager的createPopUp方法新建一个组新然后Pop出来
PopUpManager.centerPopUp(PopUpManager.createPopUp(this, Comp, true));
< mx:Application xmlns:mx = " http://www.adobe.com/2006/mxml "   creationComplete = " init() " >  
< mx:Script >    
    
<! [CDATA[
   
import mx.managers.PopUpManager; private var vboxw:VBox = new VBox();
   
// 这是一打开就弹出来的窗口
    private function init(): void {   
    PopUpManager.addPopUp(vboxw,
this , true );
    }
   
// 这是点击后要弹出的,(注:要求在vboxw后面弹出)
    private var clikwindos:VBox = new VBox();
   
private function clikup(): void
    {
     PopUpManager.addPopUp(clikwindos,
this , true ); // 这里怎么设置呢感谢大师帮助.
    }
   
// 还有就是有时场景中会弹出多个窗口,请问最后弹出的窗口能不能加到,已弹出窗口的背面呢谢谢.

   ]]
>    
    
</ mx:Script >
< mx:Button label = " Launch TitleWindow " click = " clikup() " />   
</ mx:Application >

5、mx.modules.loadModule方法加载子模块
[javascript]
  1. public function jumpTo(toUrl:String):void  
  2. {          
  3.     m1.url=toUrl;     
  4.     m1.loadModule();      
  5. }   
  6. //其它地方法调用   
  7. this.parentApplication.jumpTo(url);   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值