Board logo

标题: Flex页面之间切换问题 [打印本页]

作者: lalo    时间: 2010-8-23 10:38     标题: Flex页面之间切换问题

本帖最后由 lalo 于 2010-8-23 10:45 编辑

有很多初学者往往对Flex”页面“之间切换问题感到困惑,下面以登录界面为例,介绍一下如何页面之间切换。
其实,”页面“的概念只是针对传统的网页技术而言,而Flex中并不存在”页面“概念。也就是说Flex并不像网站那样,是由一个个页面组成,Flex或者Flash只有一个页面。那么Flex组成单位是什么?是容器和组件。可以把页面简单的理解为容器,如面板(Panel)。其中最基本的容器类是Canvas,里面没有任何内容,只有一些常规的操作(如元素拖拽)。而其他常用的容器组件都是继承了Canvas类,如Panel就是在Canvas基础上增加了一些功能和效果。所以开发组件很多都是继承了Canvas类。
了解了容器之后,就剩下一个问题了:如何在容器之间切换?那就用到了导航组件。如TabNavigator就是一个标签切换的导航组件。在众多导航组件中,有一个基本的组件,就是ViewStack。类库提供的导航都是继承了ViewStack类。下面是一段ViewStack的演示代码。

<?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">
        <fx : Declarations>
                <!-- 将非可视元素(例如服务、值对象)放在此处 -->
        </fx : Declarations>
       
        <fx : Script>
                <![CDATA[

                        protected function btnLogin_clickHandler(event:MouseEvent):void
                        {
                                vs.selectedIndex = 1;
                        }

                ]]>
        </fx:Script>
       
        <mx:ViewStack id="vs">
               
                <s : NavigatorContent id="loginView">
                        <s : Panel title="登录界面">
                                <mx:Form>
                                        <mx:FormItem label="用户名">
                                                <s:TextInput/>
                                        </mx:FormItem>
                                        <mx:FormItem label="密码">
                                                <s:TextInput displayAsPassword="true"/>
                                        </mx:FormItem>
                                        <mx:Form>
                                                <s:Button id="btnLogin" label="登录"
                                                                  click="btnLogin_clickHandler(event)" />
                                        </mx:Form>
                                </mx:Form>
                        </s : Panel>
                </s : NavigatorContent>
               
                <s : NavigatorContent id="mainView">
                        <s : Panel title="欢迎界面">
                                <s : Label text="欢迎登录系统" />
                        </s : Panel>
                </s : NavigatorContent>
               
        </mx:ViewStack>
       
</s : Application>

由于我手头上是Flex4版本,所以这是Flex4的代码。不过没关系,Flex3代码也是大同小异的,基本差不多。通过设置 selectedIndex 属性,可以在ViewStack的子组件之间切换。
注:Flex3可能没有NavigatorContent,编写时去掉即可。

在实际开发中,一般会把子组件单独分离一个组件文件编写,这样这个文件就不会有很多代码。

注意:为了阅读方便,代码中出现”:“符号前后部分增加了空格,编写代码时需要注意。




欢迎光临 万卷图书 (http://wanjuanchina.net/) Powered by Discuz! 7.0.0