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

flex 使用viewstack实现页面的跳转

发布时间:2020-12-15 01:23:31 所属栏目:百科 来源:网络整理
导读:flex其中没有页面跳转这个说法,其实,就是应用程序的切换。 网上的方法:1)viewstack,2)state 3)modular 4)navigator url 转贴:http://www.cnblogs.com/xingluzhe/archive/2009/08/16/1547157.html 建立一个main.mxml的应用程序,作为一个主程序,再建立两

flex其中没有页面跳转这个说法,其实,就是应用程序的切换。

网上的方法:1)viewstack,2)state 3)modular 4)navigator url

转贴:http://www.cnblogs.com/xingluzhe/archive/2009/08/16/1547157.html

建立一个main.mxml的应用程序,作为一个主程序,再建立两个component ,一个是login.mxml,另一个是welcome.mxml.

main.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
????? xmlns:s="library://ns.adobe.com/flex/spark"
????? xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:component="component.*">
?<fx:Declarations>
??<!-- 将非可视元素(例如服务、值对象)放在此处 -->
?</fx:Declarations>
?<mx:ViewStack id = "pageStores">
??<component:login id="login">
???
??</component:login>
??<!--<local:login_page id="login"></local:login_page>-->? <!--注意,要使login先显示出来,则要把它放第一个-->
??<component:welcome id="welcome">
???
??</component:welcome>
??<!--<local:home_page id="home"></local:home_page>? -->
?</mx:ViewStack>
</s:Application>

login.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas
?xmlns:fx="http://ns.adobe.com/mxml/2009"
?? xmlns:s="library://ns.adobe.com/flex/spark"
?? xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="304"
?? creationComplete="init()"
?? >
?<fx:Declarations>
??<!-- 将非可视元素(例如服务、值对象)放在此处 -->
?</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.containers.ViewStack;?? //导入viwstack包,下面要用到viewstack类型
import mx.controls.Alert;
private var vs:ViewStack;     //vs是main.mxml中定义的viewstack
??private function init():void
??{
??vs = this.parent as ViewStack;?? //初始login的时候获得main.mxml中的viewstack,即pagestores(它的id),记住,要在login.mxml中加
??                    ? //入:creationComplete="init()
??}
??private function getChild(str:String):Object? //这段代码是为了获得指定页面对应的对象
??{
??for each(var obj in vs.getChildren())? //遍历vs中的所有子组件(即所有页面),页面不会太多,顶多一二十个,所以这个方法不会太耗时
??{
??if(obj.name === str) //如果是想找的页面,就返回这个对象。比如想找到welcome.mxml,则令str="welcome"
??{
??break;
??}
??}
??return obj;
??}
??private function btnClick(event:Event):void    //确定按钮的响应
??{
??var obj:Object = getChild("welcome");????????? //找到想要显示的对象
if(username.text == "admin" && password.text == "admin") //如果用户名与密码正确
{???????????????
vs.selectedChild = obj as mx.containers.Canvas;    //将welcome作为显示的页面,即实现了页面的跳转
}
else
{
?mx.controls.Alert.show("用户名或者密码错误!","ERROR!");
}???????????
}
?
?protected function button1_clickHandler(event:MouseEvent):void
?{
??// TODO Auto-generated method stub
??btnClick(event);
?}
?
]]>
</fx:Script>
?<s:TextInput x="111" y="74" id="username"/>
?<s:TextInput x="112" y="124" id="password"/>
?<s:Label x="53" y="75" width="43" height="20" text="用户名"/>
?<s:Label x="57" y="124" width="43" height="20" text="密码"/>
?<s:Button x="204" y="164" label="登录" click="button1_clickHandler(event)"/>
</mx:Canvas>


welcome.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas
?xmlns:fx="http://ns.adobe.com/mxml/2009"
?? xmlns:s="library://ns.adobe.com/flex/spark"
?? xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">
?<fx:Declarations>
??<!-- 将非可视元素(例如服务、值对象)放在此处 -->
?</fx:Declarations>
?<s:Label x="107" y="92" width="129" height="22" text="Welcome!登录成功!"/>
?
</mx:Canvas>

上面的代码可以正常运行,也算做是flex页面跳转的一个小例子吧。另外,记得,在login.mxml 和 welcome.mxml中的标记为mx:Canvas

(编辑:李大同)

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

    推荐文章
      热点阅读