加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex 页面跳转

发布时间:2020-12-15 03:45:59 所属栏目:百科 来源:网络整理
导读:Flex中实现页面的跳转以下几种方式: 1、使用ViewStack组件,把要跳转的页新建成 MXML Component,然后 ... Flex关于页面跳转的方式,我是直接贴的,博客中很多很多,我只是贴过来然后结合实际应用中分析下那种方式最好。 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"?? </mx:ViewStack>??
  5. <!--?然后再用别的组件切换这些页,比如用?Button?-->??
  6. mx:Button?click="storeViews.selectedChild=page1;"??/>????

Xhtml代码?
  1. ???shouye?id="page1"??label="page1"?showEffect="WipeDown"?hideEffect="WipeUp"??/>??
  2. leixing?id="page2"????label="page2"??showEffect="WipeDown"?hideEffect="WipeUp"?make?id="page3"?label="page3"?showEffect="WipeDown"?hideEffect="WipeUp"?? <!--?然后再用别的组件切换这些页,比如用?Button?-->??
  3. mx:Button?click="storeViews.selectedChild=page1;"??/>????

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

?

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

?

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

Javascript代码?
    request:URLRequest?=?new?URLRequest("163.com");??
  1. "_blank");??

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

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

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,255)">true);
??? }
???? 这是点击后要弹出的,(注:要求在vboxw后面弹出) private?var clikwindos:VBox= private?function clikup(): void
??? {
???? PopUpManager.addPopUp(clikwindos,255)">true); 这里怎么设置呢感谢大师帮助.
??? }
???? 还有就是有时场景中会弹出多个窗口,请问最后弹出的窗口能不能加到,已弹出窗口的背面呢谢谢.

?? ]]>????
?????</mx:Script>
<mx:Button label="Launch TitleWindow"?click="clikup()"?/>???
</mx:Application>
5、mx.modules.loadModule方法加载子模块
public?function?jumpTo(toUrl:String):void??
  • {??????????
  • ????m1.url=toUrl;?????
  • ????m1.loadModule();??????
  • }???
  • //其它地方法调用???
  • this.parentApplication.jumpTo(url); ?
  • (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    相关内容
    推荐文章
    站长推荐
    热点阅读