`
xiaoxiong0913
  • 浏览: 6357 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

利用viewstack组件实现各个子组件之间的跳转和数据传递

    博客分类:
  • Flex
阅读更多
如题,为了实现在同一项目中实现各个mxml界面间的跳转和数据传递,查了不少资料,写了一个实例发上来一起学习下,也许这不是最好的方式,希望有更好实现方式的朋友分享下。
说明:这是一个简单的登陆实例,一共有4个mxml界面,分别为:main.mxml,login.mxml,welcome.mxml,failure.mxml,其中main为主应该程序入口。实现逻辑,登陆成功则把登陆名传递到welcome界面中并显示登陆成功信息,否则显示失败界面并3秒后自动跳转到登陆界面。
main.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*">
<mx:Script>
<![CDATA[
//用于实例数据传递的方法
public function getSuccessInfo(str:String):void{
welcomeview.info=str;
}
public function getFailureInfo(str:String):void{
fuilureview.failureinfo=str;
}
]]>
</mx:Script>
<mx:ViewStack id="view" x="140" y="160">
<local:login id="loginview" layout="absolute"/>
<local:welcome id="welcomeview"/>
<local:failure id="fuilureview"/>
</mx:ViewStack>
</mx:Application>
---------------------------------------------------------------
login.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="228" creationComplete="init()" title="登陆界面" fontSize="12">
<mx:Script>
<![CDATA[
import mx.containers.Canvas;
import mx.containers.ViewStack;
private var vs:ViewStack;
[Bindable]
public var loginsuccess:String;
[Bindable]
private var i:int=3;
private function init():void{
vs=this.parent as ViewStack;
trace(vs.id);
}
private function getChild(str:String):Object{
for each(var obj:* in vs.getChildren()){
if(obj.name==str){
break;
}
}
return obj;
}
private function btnok(evt:Event):void{
if("joy"==uname.text && "joy"==upassword.text){
var o:Object=this.getChild("welcomeview");
vs.selectedChild=o as Canvas;
//把登陆成功的用户名传递到wlecome页面中去
this.parentApplication.getSuccessInfo(uname.text);
}else{
var e:Object=getChild("fuilureview");
vs.selectedChild=e as Canvas;
//backFun();
//登陆失败后在指定时间内跳转到登陆界面
loginFailure();
}
}
private function loginFailure():void{
var str:String="登陆失败,程序将在"+i+"秒后回到登陆界面";
this.parentApplication.getFailureInfo(str);
var myt:Timer=new Timer(1000,3);
myt.addEventListener(TimerEvent.TIMER,THandler);
myt.start();
}
private function THandler(e:TimerEvent):void{
i--;
var str:String="登陆失败,程序将在"+i+"秒后回到登陆界面";
this.parentApplication.getFailureInfo(str);
if(i==0){
var oo:Object=this.getChild("loginview")
vs.selectedChild=oo as Panel;
i=3;
}
}
]]>
</mx:Script>
<mx:Form x="10" y="10" width="360" height="158">
<mx:FormItem label="UserName:">
<mx:TextInput id="uname"/>
</mx:FormItem>
<mx:FormItem label="UserPassWord:">
<mx:TextInput id="upassword" displayAsPassword="true"/>
</mx:FormItem>
<mx:FormItem height="28">
<mx:HBox width="162" height="27">
<mx:Button label="Login" height="26" id="btnlogin" click="btnok(event);"/>
<mx:Button label="Cancel" height="26" id="btncancel"/>
</mx:HBox>
</mx:FormItem>
</mx:Form>
</mx:Panel>
-------------------------------------------------------------
welcome.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
<mx:Script>
<![CDATA[
[Bindable]
public var info:String;
]]>
</mx:Script>
<mx:Panel x="0" y="0" width="100%" height="100%" layout="absolute" title="成功" fontSize="12">
<mx:Label x="47" y="52" text="Welcome: {info}" width="155" color="#20E5B9" fontWeight="bold" fontSize="15"/>
</mx:Panel>

</mx:Canvas>
--------------------------------------------------
failure.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="460" height="362">
<mx:Script>
<![CDATA[
[Bindable]
public var failureinfo:String;
]]>
</mx:Script>
<mx:Panel x="28.5" y="25" width="100%" height="100%" layout="absolute" title="登录失败界面" fontSize="12">
<mx:Label x="10" y="46" text="{failureinfo}" width="263" fontWeight="bold" fontSize="12" color="#F16798" height="66"/>
</mx:Panel>

</mx:Canvas>
3
0
分享到:
评论
2 楼 chensi24 2011-08-16  
仁兄谢谢了,我终于实现了
1 楼 chensi24 2011-08-15  
博主如果在FB4.5中实现在viewStack中实现页面之间的传递数据,就要在local外加一层套:NavigatorContent,此时如下:<mx:ViewStack id="MyStack" idth="100%" height="100%">
<s:NavigatorContent  id="View">
<views:XueshengList width="1060" height="100%"/>
</s:NavigatorContent>
<s:NavigatorContent id="More">
<views:xuesheng id="xs"  width="100%"            height="100%" />
</s:NavigatorContent>

          </mx:ViewStack>

我在一个事件侦听函数中侦听了事件
private function ToMoreView(event:ChangeStackEvent):void
{
    if(MyStack.selectedChild!=More){ MyStack.selectedChild=More;
         xs.xsmodel=event._obj as XsModel; }
}
可是调试发现xs.xsmodel是一个未初始化的变量,无法赋值。请问如何解决,想了好久都解决不了

相关推荐

    Flexstore源码解析1 ViewStack+ToggleButtonBar实现幕布特效

    在这个源码解析中,我们主要关注的是ViewStack和ToggleButtonBar这两个组件在实现幕布特效中的应用。ViewStack是Flex的一个容器,它允许你在多个子组件之间进行切换,而ToggleButtonBar则是一种可以切换多个选项的...

    flex使用viewstack切换页面的例子

    综上所述,"flex使用viewstack切换页面的例子"展示了如何利用Flex 4的ViewStack组件创建多页面应用,通过编程或用户交互来切换不同视图,提供更好的用户导航体验。在实际开发中,理解并熟练运用这些知识点对于构建...

    flex页面跳转及数据绑定

    例如,在示例代码中,我们创建了三个子组件(shouye, leixing, makeid)并设置其标签和显示效果,然后通过按钮点击事件改变ViewStack的选择项来实现页面跳转。 2. **navigateToURL**:此方法用于打开新的浏览器窗口...

    Flex 对象调用之间的 数据传递 包括 页面调用之间的数据传递 -

    此外,为了更好地实现数据传递,开发者还会使用ActionScript类、XML、JSON等数据格式进行序列化和反序列化,以便于数据交换。在Flex中,`flash.utils.ByteArray`类可用于数据的二进制操作,而`XML`和`ObjectProxy`则...

    xmlplus组件设计系列之路由(ViewStack)(7)

    ViewStack组件的一个关键特性是它能够根据不同的命令或事件在这些子级组件之间进行切换,从而实现不同视图的展示。 从xmlplus框架提供的示例中可以看出,ViewStack组件可以通过设置一个静态的index属性来指定哪一个...

    flex的跳转

    在Flex开发中,"flex的跳转"通常指的是在应用程序中实现不同视图或界面之间的切换。虽然Flex没有像传统Web应用那样明确的"页面"概念,但它提供了多种方式来模拟这种页面切换的效果。以下是对Flex中实现页面跳转的几...

    Flex viewstack切换

    Flex 实现viewstack简单切换。

    Flex页面跳转.txt

    2. **添加子组件**:通过动态添加子组件来实现页面跳转。 ```as3 tabNav.tabs = [new mx.controls.Tab(label="Tab1", selectedChild="view1"), new mx.controls.Tab(label="Tab2", selectedChild="view2")]; ``` ...

    flex sample-跳转

    在Flex中,ViewStack是一个非常重要的容器控件,它允许你在应用程序中实现页面间的导航和切换效果。在这个名为"flex sample-跳转"的项目中,我们可以深入探讨Flex中的ViewStack控件以及与其相关的开发技巧。 ...

    ViewStack component for Silverlight 2 – An inevitable control in RIA space

    在这些控件中,视图栈(ViewStack)组件是一个非常实用且不可或缺的部分,特别是在实现多视图切换和导航功能时。本文将深入探讨银光2中的视图栈组件及其在RIA开发中的应用。 视图栈组件,顾名思义,它如同一个堆叠...

    MXViewStackEffectExample FLEX切换效果

    MXViewStackEffectExample是基于Adobe Flex的一个示例项目,展示了如何使用MXViewStack组件和效果来实现平滑的视图切换。Flex是一个开源的、基于MXML和ActionScript的框架,用于构建富互联网应用程序(RIA)。这个...

    flex动态导航跳转页面

    开发者可以通过MXML定义组件的外观和结构,并与ActionScript逻辑进行绑定,实现数据驱动的界面更新。 4. **导航控制器**: 在Flex中,可以使用NavigationController或者ViewStack等组件来管理页面间的导航。这些...

    Eflex_v1.01 18种效果

    通过Eflex_v1.01,开发者可以轻松地将这些效果应用到ViewStack的各个子组件上,只需指定相应的效果类型和参数即可。此外,该工具可能还支持自定义动画持续时间、延迟时间以及动画曲线,以满足不同场景下的需求。 在...

    Flex UI组件使用全集

    ### Flex UI组件使用全集详解 #### 概述 本文档是基于阿树对Adobe Flex UI组件库的全面整理,并结合Adobe主页上提供的各种组件代码示例进行...通过熟练掌握这些组件,开发者能够更加灵活地设计和实现自己的应用界面。

    Flex 3 组件实例与应用(2009版)

    通过以上对《Flex 3 组件实例与应用》一书中提到的各类组件的介绍,我们可以看出Flex 3提供的组件不仅涵盖了基本的UI需求,还包括了高级的交互、数据展示和验证等功能。这使得开发者能够在构建复杂的应用程序时更加...

    Flex常规控件和组件

    在 Flex 中,控件和组件是构建用户界面的基本元素,它们提供了多种功能和样式,以满足不同需求。下面将详细介绍这些常规的 Flex 控件和组件: 1. Button:Button 是最基本的动作触发器,用于响应用户的单击事件。它...

    Flex从入门到实践2

    作为示例,我们构建了一个简单的名片管理系统,使用ViewStack、TabNavigator或Accordion等组件来实现数据的添加、查找和删除功能。数据存储在客户端的数组集合中,删除操作会提示用户确认。 5. **小结与习题** 本...

    Flex仿苹果导航

    此外,Flex中的Button和Label组件可以用来创建导航按钮和标题,而NavigatorContent或ViewStack组件则可以承载各个子页面的内容。为了实现滑动效果,可能需要自定义组件或者使用现有的库,如绿叶(GreenSock)动画库...

Global site tag (gtag.js) - Google Analytics