- 浏览: 54252 次
- 性别:
- 来自: 天津
最近访客 更多访客>>
最新评论
-
shuiyunbing:
单元格样式怎么处理?
将flex页面数据导出到excel -
gaoyide:
啥破玩意!!
FLEX alive pdf 打印pdf -
zhong_pro:
关于博主的问题点,做如下修改就可以达到不需要属性isSelec ...
Flex 4通过重写DataGridColumn和CheckBox类给DataGrid添加选择列-CheckBoxColumn -
zhenxingzzx:
看不到附件的 !!
Adobe AIR右键菜单和系统托盘(Tray)功能以及实现方法 -
pangxin12345:
dingdingdingdingding
Adobe AIR右键菜单和系统托盘(Tray)功能以及实现方法
3.2 视图模式与视图转换
3.2.1 视图模式
Flex为了多样化可视化组件并加强与用户的交互性,提供了视图模式的支持。HTML页面通过框架设计、标签编程等方式来进行界面的统一视图处理,这给页面上的数据元素带来了很大的不确定性,同时也降低了数据的可维护性,Flex的视图模式则对应用程序界面的视图控制进行了单独的定义——视图模式。
具体来说,视图模式定义了界面中一部分数据条目组件的显示方式,如我们可以对Windows系统中的文件夹进行平铺查看或列表查看,这就是典型的视图模式。在Flex应用开发中,我们常常需要对数据组件进行更为复杂的视图转换操作,如定制化地增减组件、修改组件属性、组件外观控制等。
在Flex中使用视图控制,我们需要首先定义基本视图,然后定义视图变更或视图覆盖的集合,用来修改基本视图。每一种附加的视图模式都可以对基本视图中的组件数量、组件内容、相关属性进行设置和调整。
3.2.2 创建和应用视图模式
使用MXML标签<mx:States>和<mx:State>可以进行视图模式的创建,<mx:States>用于进行视图模式组的定义,可以在其中包含一或多个<mx:State>,<mx:State>则对应每一个具体的视图定义。
示例3.5 创建视图模式
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:states>
<mx:State name="Register">
<mx:AddChild relativeTo="{loginForm}" position="lastChild">
<mx:FormItem id="confirm" label="确认密码:">
<mx:TextInput/>
</mx:FormItem>
</mx:AddChild>
<mx:SetProperty target="{loginPanel}" name="title" value="注册"/>
<mx:SetProperty target="{loginButton}" name="label" value="注册"/>
<mx:RemoveChild target="{registerLink}"/>
<mx:AddChild relativeTo="{spacer1}" position="before">
<mx:LinkButton label="返会到登录" click="currentState=''"/>
</mx:AddChild>
</mx:State>
</mx:states>
<mx:Panel id="loginPanel" title="登录" fontSize="12"
horizontalScrollPolicy="off" verticalScrollPolicy="off">
<mx:Form id="loginForm">
<mx:FormItem label="用户名:">
<mx:TextInput/>
</mx:FormItem>
<mx:FormItem label="密码:">
<mx:TextInput/>
</mx:FormItem>
</mx:Form>
<mx:ControlBar>
<mx:LinkButton id="registerLink" label="还未注册?"
click="currentState='Register'"/>
<mx:Spacer width="100%" id="spacer1"/>
<mx:Button label="登录" id="loginButton"/>
</mx:ControlBar>
</mx:Panel>
</mx:Application>
结合示例3.5我们来了解一下如何创建视图模式并设计不同视图中的组件变化。首先我们看示例程序的下半部分,这里定义了一个id为loginPanel的Panel组件,程序从这里开始创建了一个基本视图,也就是默认状态下的组件显示状态,在Panel组件中一个LinkButton组件定义了click时间监听器,执行了currentState=‘Rigister’的视图转换功能;然后我们再来看程序上半部分id为Rigister的视图定义,在<mx:States>中定义了一个id为Rigister的视图模式,在这个模式中使用了<mx:AddChild>、<mx:SetProperty>和<mx:RemoveChild>等MXML标签,实现了对Panel容器组件的内容控制——增加了一个用于确认密码输入的TextInput,并且修改了基本视图模式的一些显示用的文字信息,删除掉了原来的LinkButton组件,新增加了用于返回到基本视图模式的LinkButton组件。运行效果如图3.7和3.8所示。当处于初始状态时,程序显示为一个登录窗体(见图3.7),可以通过单击“还未注册”按钮跳转到注册视图进行新用户注册(见图3.8)。这就是视图模式的创建和应用,增加了现有组件的可重用性,并且加强了数据的可维护性,极大地提高了程序的工作效率,节省了系统资源。
图3.7 视图模式创建和应用(1)
图3.8 视图模式创建和应用(2)
如果使用Flex Builder 3进行Flex应用程序开发,视图处理功能可以通过设计界面进行更加方便的设计。如图3.9所示,右上部分的窗体是一个视图模式编辑器States,可以通过图形界面设定创建、修改或删除视图模式,每一个应用程序都会有基本视图模式,即图3.9中的<Base state>,这个视图模式是不能修改或删除的,在基本视图模式的基础上我们可以直接使用States视图编辑器进行视图创建,即图3.9中的Register,对应示例3.5中的Register视图模式。
图3.9 使用Flex Builder 3设计视图模式(1)
当选中了States视图编辑器中的Register后,我们即可以在新的视图模式中进行GUI设计,如图3.10所示。这时我们在UI设计器中对组件的设计操作只会对Register视图模式进行修改,而不会影响基本视图。
图3.10 使用Flex Builder 3设计视图模式(2)
States视图编辑器的右上角有3个按钮,分别用于添加、修改和删除视图模式。当我们选中Register视图后,单击修改按钮,会弹出如图3.11所示的对话框。这时,我们可以修改视图模式的名称,并可以指定该视图模式是否作为起始状态的视图模式,如果勾选了“Set as start state”,那么该视图模式在程序启动后会自动加载。
图3.11 使用Flex Builder 3设计视图模式(3)
3.2.3 视图模式与历史记录管理器
略……
3.2.4 视图转换——Transitions
视图模式的切换让用户更方便快捷地与Flex应用程序进行交互,此时我们可以使用Flex的Transitions来进行视图模式转换的效果控制。视图模式用于定义当前界面的组件表现和数据集成,多个视图模式可以通过设置currentState来进行切换,而具体切换的过程和需要实现的效果可以使用Transitions进行控制。
Flex的绚丽效果可谓处处可见,小到每一个组件,大到整个应用程序的控制都可以附加丰富多彩的效果,对视图转换的效果设置有些类似于Microsoft PowerPoint的幻灯片切换设定,即我们可以对目标的视图组件,如新添加的组件、发生改动的组件或被删除的组件进行具体的效果设定。
对视图转换的设定是非常灵活的,我们可以为视图中每一个组件设定不同的效果,并可以设定效果集合来同时设定多个组件的效果类型。通过MXML标签<mx:transitions>和<mx:Transition>可以对Transitions进行定义。
示例3.7 使用Transitions控制视图转换效果
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
verticalAlign= "middle">
<mx:Script>
<![CDATA[
import mx.effects.easing.Bounce;
]]>
</mx:Script>
<mx:transitions>
<mx:Transition>
<mx:Parallel
targets="{[loginPanel, registerLink, loginButton, confirm]}">
<mx:Resize duration="500" easingFunction="Bounce.easeOut"/>
<mx:Sequence target="{confirm}">
<mx:Blur duration="200" blurYFrom="1.0" blurYTo="20.0"/>
<mx:Blur duration="200" blurYFrom="20.0" blurYTo="1"/>
</mx:Sequence>
</mx:Parallel>
</mx:Transition>
</mx:transitions>
<mx:states>
<mx:State name="Register">
<mx:AddChild relativeTo="{loginForm}" position="lastChild">
<mx:FormItem id="confirm" label="确认密码:">
<mx:TextInput/>
</mx:FormItem>
</mx:AddChild>
<mx:SetProperty target="{loginPanel}" name="title" value="注册"/>
<mx:SetProperty target="{loginButton}" name="label" value="注册"/>
<mx:RemoveChild target="{registerLink}"/>
<mx:AddChild relativeTo="{spacer1}" position="before">
<mx:LinkButton label="返会到登录" click="currentState=''"/>
</mx:AddChild>
</mx:State>
</mx:states>
<mx:Panel id="loginPanel" title="登录" fontSize="12"
horizontalScrollPolicy="off" verticalScrollPolicy="off">
<mx:Form id="loginForm">
<mx:FormItem label="用户名:">
<mx:TextInput/>
</mx:FormItem>
<mx:FormItem label="密码:">
<mx:TextInput/>
</mx:FormItem>
</mx:Form>
<mx:ControlBar>
<mx:LinkButton id="registerLink" label="还未注册?"
click="currentState='Register'"/>
<mx:Spacer width="100%" id="spacer1"/>
<mx:Button label="登录" id="loginButton"/>
</mx:ControlBar>
</mx:Panel>
</mx:Application>
示例3.7定义了一个登录与注册视图模式的转换效果,界面内容与示例3.5是一致的,分别对应从登录视图到注册视图的切换效果为Resize效果和Blur效果,Parallel和Sequence分别定义了效果的并行响应和线性响应。按照示例中的设定,点击LinkButton组件进行视图模式转换时,会响应一个尺寸改变的效果,同时伴随组件的模糊清晰转换效果,同时对Resize效果设置了Bounce.easeOut,这样当尺寸改变效果完成时会出现一个组件颤动的效果,如图3.14所示。这个实例集合了多种顺序和状态的转换效果。
图3.14 使用Transitions控制视图转换效果
3.2.5 详解Transition的使用
略……
3.2.6 效果过滤器
默认情况下,Flex会对所有Transition所指定的视图模式进行效果响应,然而有些时候我们往往不希望所有的目标组件都执行这样的效果,而是能够动态地对效果进行过滤,更有时会出于效率方面的原因,希望屏蔽掉某些组件的效果,这时我们需要对Transition进行效果过滤。
在Transition中定义效果对象,可以使用filter属性指定过滤器,这样可以在执行效果响应时控制目标组件的状态选择。filter属性所指定的效果过滤器会在目标组件触发效果时生效,因此即使不使用视图模式,也可以为可视化组件设置效果过滤器属性,实现对某些特定组件的效果过滤。
效果过滤器在可视化组件的应用中,一种典型的使用方法就是屏蔽掉当前隐藏掉的组件的效果处理,因为我们往往对某一批组件进行统一的效果处理,而这些组件中的一部分甚至绝大部分在某一时刻处于隐藏状态,这种状态不需要对这些组件进行任何与外观相关的操作,效果处理也不例外,因此,有必要将这些组件的效果响应过滤掉,从而提高应用程序的执行效率。
效果过滤器通过filter属性支持下列状态过滤。
* add:允许当前视图中添加组件时执行效果。
* hide:允许当前视图中隐藏状态的组件执行效果。
* move:允许当前视图中移动状态的组件执行效果。
* remove:允许当前视图中删除组件时执行效果。
* resize:允许当前视图中大小变化的组件执行效果。
* show:允许当前视图中显示状态的组件执行效果。
示例3.9 使用效果过滤器
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:states>
<mx:State name="Two">
<mx:SetProperty target="{p1}" name="visible" value="false"/>
<mx:SetProperty target="{p2}" name="visible" value="true"/>
<mx:SetProperty target="{p3}" name="visible" value="true"/>
<mx:SetProperty target="{p2}" name="x" value="0"/>
<mx:SetProperty target="{p2}" name="y" value="0"/>
<mx:SetProperty target="{p3}" name="x" value="0"/>
<mx:SetProperty target="{p3}" name="y" value="110"/>
</mx:State>
<mx:State name="Three">
<mx:SetProperty target="{p1}" name="visible" value="true"/>
<mx:SetProperty target="{p2}" name="visible" value="false"/>
<mx:SetProperty target="{p3}" name="visible" value="true"/>
<mx:SetProperty target="{p1}" name="x" value="0"/>
<mx:SetProperty target="{p1}" name="y" value="110"/>
<mx:SetProperty target="{p3}" name="x" value="0"/>
<mx:SetProperty target="{p3}" name="y" value="0"/>
</mx:State>
</mx:states>
<mx:transitions>
<mx:Transition fromState="*" toState="*">
<mx:Sequence targets="{[p1,p2,p3]}">
<mx:Sequence id="sequence1" filter="hide" >
<mx:WipeUp/>
<mx:SetPropertyAction name="visible" value="false"/>
</mx:Sequence>
<mx:Move filter="move"/>
<mx:Sequence id="sequence2" filter="show" >
<mx:SetPropertyAction name="visible" value="true"/>
<mx:Fade/>
</mx:Sequence>
</mx:Sequence>
</mx:Transition>
</mx:transitions>
<mx:Canvas id="pm" width="100%" height="100%">
<mx:Panel id="p1" title="收件箱" x="0" y="0" fontSize="12" width="200"
height="100" click="currentState=''" >
<mx:List id="myL1" width="100%" height="100%">
<mx:Array>
<mx:String>1.来自 Ian.</mx:String>
<mx:String>2.天气预报.</mx:String>
<mx:String>3.来自 Zoe.</mx:String>
</mx:Array>
</mx:List>
</mx:Panel>
<mx:Panel id="p2" title="发件箱" x="0" y="110" fontSize="12" width="200"
height="100" click="currentState='Two'" >
<mx:List id="myL2" width="100%" height="100%">
<mx:Array>
<mx:String>1.发往 Ian.</mx:String>
<mx:String>2.发往 Zoe.</mx:String>
</mx:Array>
</mx:List>
</mx:Panel>
<mx:Panel id="p3" title="草稿箱" visible="false" fontSize="12" width="200"
height="100" click="currentState='Three'" >
<mx:List id="myL3" width="100%" height="100%">
<mx:Array>
<mx:String>1.申请.</mx:String>
</mx:Array>
</mx:List>
</mx:Panel>
</mx:Canvas>
</mx:Application>
示例3.9创建了一个信箱界面,包含三个视图模式,分别是收件箱、发件箱和草稿箱。每种模式都会显示两个组件,而隐藏掉另一个组件,这样可以通过点击下方的组件进行视图状态切换。不难看出,整个视图切换的流程是一个固定的循环,因此使用Transition来进行控制会非常方便,但是每次需要显示和隐藏的视图是在不停变化的,设置成固定的效果模式并不能满足要求。这时,我们就可以使用效果过滤器来进行处理。
示例中,对两个效果稽核Sequence分别定义了不同的过滤器,当目标组件隐藏时,执行id为sequence1的效果集,当目标组件显示时,则执行id为sequence2的效果集。即组件从显示到隐藏会执行WipeUp的效果,而从隐藏到显示则会执行Fade的效果。示例的运行效果如图3.15所示。
图3.15 使用效果过滤器
3.2.1 视图模式
Flex为了多样化可视化组件并加强与用户的交互性,提供了视图模式的支持。HTML页面通过框架设计、标签编程等方式来进行界面的统一视图处理,这给页面上的数据元素带来了很大的不确定性,同时也降低了数据的可维护性,Flex的视图模式则对应用程序界面的视图控制进行了单独的定义——视图模式。
具体来说,视图模式定义了界面中一部分数据条目组件的显示方式,如我们可以对Windows系统中的文件夹进行平铺查看或列表查看,这就是典型的视图模式。在Flex应用开发中,我们常常需要对数据组件进行更为复杂的视图转换操作,如定制化地增减组件、修改组件属性、组件外观控制等。
在Flex中使用视图控制,我们需要首先定义基本视图,然后定义视图变更或视图覆盖的集合,用来修改基本视图。每一种附加的视图模式都可以对基本视图中的组件数量、组件内容、相关属性进行设置和调整。
3.2.2 创建和应用视图模式
使用MXML标签<mx:States>和<mx:State>可以进行视图模式的创建,<mx:States>用于进行视图模式组的定义,可以在其中包含一或多个<mx:State>,<mx:State>则对应每一个具体的视图定义。
示例3.5 创建视图模式
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:states>
<mx:State name="Register">
<mx:AddChild relativeTo="{loginForm}" position="lastChild">
<mx:FormItem id="confirm" label="确认密码:">
<mx:TextInput/>
</mx:FormItem>
</mx:AddChild>
<mx:SetProperty target="{loginPanel}" name="title" value="注册"/>
<mx:SetProperty target="{loginButton}" name="label" value="注册"/>
<mx:RemoveChild target="{registerLink}"/>
<mx:AddChild relativeTo="{spacer1}" position="before">
<mx:LinkButton label="返会到登录" click="currentState=''"/>
</mx:AddChild>
</mx:State>
</mx:states>
<mx:Panel id="loginPanel" title="登录" fontSize="12"
horizontalScrollPolicy="off" verticalScrollPolicy="off">
<mx:Form id="loginForm">
<mx:FormItem label="用户名:">
<mx:TextInput/>
</mx:FormItem>
<mx:FormItem label="密码:">
<mx:TextInput/>
</mx:FormItem>
</mx:Form>
<mx:ControlBar>
<mx:LinkButton id="registerLink" label="还未注册?"
click="currentState='Register'"/>
<mx:Spacer width="100%" id="spacer1"/>
<mx:Button label="登录" id="loginButton"/>
</mx:ControlBar>
</mx:Panel>
</mx:Application>
结合示例3.5我们来了解一下如何创建视图模式并设计不同视图中的组件变化。首先我们看示例程序的下半部分,这里定义了一个id为loginPanel的Panel组件,程序从这里开始创建了一个基本视图,也就是默认状态下的组件显示状态,在Panel组件中一个LinkButton组件定义了click时间监听器,执行了currentState=‘Rigister’的视图转换功能;然后我们再来看程序上半部分id为Rigister的视图定义,在<mx:States>中定义了一个id为Rigister的视图模式,在这个模式中使用了<mx:AddChild>、<mx:SetProperty>和<mx:RemoveChild>等MXML标签,实现了对Panel容器组件的内容控制——增加了一个用于确认密码输入的TextInput,并且修改了基本视图模式的一些显示用的文字信息,删除掉了原来的LinkButton组件,新增加了用于返回到基本视图模式的LinkButton组件。运行效果如图3.7和3.8所示。当处于初始状态时,程序显示为一个登录窗体(见图3.7),可以通过单击“还未注册”按钮跳转到注册视图进行新用户注册(见图3.8)。这就是视图模式的创建和应用,增加了现有组件的可重用性,并且加强了数据的可维护性,极大地提高了程序的工作效率,节省了系统资源。
图3.7 视图模式创建和应用(1)
图3.8 视图模式创建和应用(2)
如果使用Flex Builder 3进行Flex应用程序开发,视图处理功能可以通过设计界面进行更加方便的设计。如图3.9所示,右上部分的窗体是一个视图模式编辑器States,可以通过图形界面设定创建、修改或删除视图模式,每一个应用程序都会有基本视图模式,即图3.9中的<Base state>,这个视图模式是不能修改或删除的,在基本视图模式的基础上我们可以直接使用States视图编辑器进行视图创建,即图3.9中的Register,对应示例3.5中的Register视图模式。
图3.9 使用Flex Builder 3设计视图模式(1)
当选中了States视图编辑器中的Register后,我们即可以在新的视图模式中进行GUI设计,如图3.10所示。这时我们在UI设计器中对组件的设计操作只会对Register视图模式进行修改,而不会影响基本视图。
图3.10 使用Flex Builder 3设计视图模式(2)
States视图编辑器的右上角有3个按钮,分别用于添加、修改和删除视图模式。当我们选中Register视图后,单击修改按钮,会弹出如图3.11所示的对话框。这时,我们可以修改视图模式的名称,并可以指定该视图模式是否作为起始状态的视图模式,如果勾选了“Set as start state”,那么该视图模式在程序启动后会自动加载。
图3.11 使用Flex Builder 3设计视图模式(3)
3.2.3 视图模式与历史记录管理器
略……
3.2.4 视图转换——Transitions
视图模式的切换让用户更方便快捷地与Flex应用程序进行交互,此时我们可以使用Flex的Transitions来进行视图模式转换的效果控制。视图模式用于定义当前界面的组件表现和数据集成,多个视图模式可以通过设置currentState来进行切换,而具体切换的过程和需要实现的效果可以使用Transitions进行控制。
Flex的绚丽效果可谓处处可见,小到每一个组件,大到整个应用程序的控制都可以附加丰富多彩的效果,对视图转换的效果设置有些类似于Microsoft PowerPoint的幻灯片切换设定,即我们可以对目标的视图组件,如新添加的组件、发生改动的组件或被删除的组件进行具体的效果设定。
对视图转换的设定是非常灵活的,我们可以为视图中每一个组件设定不同的效果,并可以设定效果集合来同时设定多个组件的效果类型。通过MXML标签<mx:transitions>和<mx:Transition>可以对Transitions进行定义。
示例3.7 使用Transitions控制视图转换效果
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
verticalAlign= "middle">
<mx:Script>
<![CDATA[
import mx.effects.easing.Bounce;
]]>
</mx:Script>
<mx:transitions>
<mx:Transition>
<mx:Parallel
targets="{[loginPanel, registerLink, loginButton, confirm]}">
<mx:Resize duration="500" easingFunction="Bounce.easeOut"/>
<mx:Sequence target="{confirm}">
<mx:Blur duration="200" blurYFrom="1.0" blurYTo="20.0"/>
<mx:Blur duration="200" blurYFrom="20.0" blurYTo="1"/>
</mx:Sequence>
</mx:Parallel>
</mx:Transition>
</mx:transitions>
<mx:states>
<mx:State name="Register">
<mx:AddChild relativeTo="{loginForm}" position="lastChild">
<mx:FormItem id="confirm" label="确认密码:">
<mx:TextInput/>
</mx:FormItem>
</mx:AddChild>
<mx:SetProperty target="{loginPanel}" name="title" value="注册"/>
<mx:SetProperty target="{loginButton}" name="label" value="注册"/>
<mx:RemoveChild target="{registerLink}"/>
<mx:AddChild relativeTo="{spacer1}" position="before">
<mx:LinkButton label="返会到登录" click="currentState=''"/>
</mx:AddChild>
</mx:State>
</mx:states>
<mx:Panel id="loginPanel" title="登录" fontSize="12"
horizontalScrollPolicy="off" verticalScrollPolicy="off">
<mx:Form id="loginForm">
<mx:FormItem label="用户名:">
<mx:TextInput/>
</mx:FormItem>
<mx:FormItem label="密码:">
<mx:TextInput/>
</mx:FormItem>
</mx:Form>
<mx:ControlBar>
<mx:LinkButton id="registerLink" label="还未注册?"
click="currentState='Register'"/>
<mx:Spacer width="100%" id="spacer1"/>
<mx:Button label="登录" id="loginButton"/>
</mx:ControlBar>
</mx:Panel>
</mx:Application>
示例3.7定义了一个登录与注册视图模式的转换效果,界面内容与示例3.5是一致的,分别对应从登录视图到注册视图的切换效果为Resize效果和Blur效果,Parallel和Sequence分别定义了效果的并行响应和线性响应。按照示例中的设定,点击LinkButton组件进行视图模式转换时,会响应一个尺寸改变的效果,同时伴随组件的模糊清晰转换效果,同时对Resize效果设置了Bounce.easeOut,这样当尺寸改变效果完成时会出现一个组件颤动的效果,如图3.14所示。这个实例集合了多种顺序和状态的转换效果。
图3.14 使用Transitions控制视图转换效果
3.2.5 详解Transition的使用
略……
3.2.6 效果过滤器
默认情况下,Flex会对所有Transition所指定的视图模式进行效果响应,然而有些时候我们往往不希望所有的目标组件都执行这样的效果,而是能够动态地对效果进行过滤,更有时会出于效率方面的原因,希望屏蔽掉某些组件的效果,这时我们需要对Transition进行效果过滤。
在Transition中定义效果对象,可以使用filter属性指定过滤器,这样可以在执行效果响应时控制目标组件的状态选择。filter属性所指定的效果过滤器会在目标组件触发效果时生效,因此即使不使用视图模式,也可以为可视化组件设置效果过滤器属性,实现对某些特定组件的效果过滤。
效果过滤器在可视化组件的应用中,一种典型的使用方法就是屏蔽掉当前隐藏掉的组件的效果处理,因为我们往往对某一批组件进行统一的效果处理,而这些组件中的一部分甚至绝大部分在某一时刻处于隐藏状态,这种状态不需要对这些组件进行任何与外观相关的操作,效果处理也不例外,因此,有必要将这些组件的效果响应过滤掉,从而提高应用程序的执行效率。
效果过滤器通过filter属性支持下列状态过滤。
* add:允许当前视图中添加组件时执行效果。
* hide:允许当前视图中隐藏状态的组件执行效果。
* move:允许当前视图中移动状态的组件执行效果。
* remove:允许当前视图中删除组件时执行效果。
* resize:允许当前视图中大小变化的组件执行效果。
* show:允许当前视图中显示状态的组件执行效果。
示例3.9 使用效果过滤器
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:states>
<mx:State name="Two">
<mx:SetProperty target="{p1}" name="visible" value="false"/>
<mx:SetProperty target="{p2}" name="visible" value="true"/>
<mx:SetProperty target="{p3}" name="visible" value="true"/>
<mx:SetProperty target="{p2}" name="x" value="0"/>
<mx:SetProperty target="{p2}" name="y" value="0"/>
<mx:SetProperty target="{p3}" name="x" value="0"/>
<mx:SetProperty target="{p3}" name="y" value="110"/>
</mx:State>
<mx:State name="Three">
<mx:SetProperty target="{p1}" name="visible" value="true"/>
<mx:SetProperty target="{p2}" name="visible" value="false"/>
<mx:SetProperty target="{p3}" name="visible" value="true"/>
<mx:SetProperty target="{p1}" name="x" value="0"/>
<mx:SetProperty target="{p1}" name="y" value="110"/>
<mx:SetProperty target="{p3}" name="x" value="0"/>
<mx:SetProperty target="{p3}" name="y" value="0"/>
</mx:State>
</mx:states>
<mx:transitions>
<mx:Transition fromState="*" toState="*">
<mx:Sequence targets="{[p1,p2,p3]}">
<mx:Sequence id="sequence1" filter="hide" >
<mx:WipeUp/>
<mx:SetPropertyAction name="visible" value="false"/>
</mx:Sequence>
<mx:Move filter="move"/>
<mx:Sequence id="sequence2" filter="show" >
<mx:SetPropertyAction name="visible" value="true"/>
<mx:Fade/>
</mx:Sequence>
</mx:Sequence>
</mx:Transition>
</mx:transitions>
<mx:Canvas id="pm" width="100%" height="100%">
<mx:Panel id="p1" title="收件箱" x="0" y="0" fontSize="12" width="200"
height="100" click="currentState=''" >
<mx:List id="myL1" width="100%" height="100%">
<mx:Array>
<mx:String>1.来自 Ian.</mx:String>
<mx:String>2.天气预报.</mx:String>
<mx:String>3.来自 Zoe.</mx:String>
</mx:Array>
</mx:List>
</mx:Panel>
<mx:Panel id="p2" title="发件箱" x="0" y="110" fontSize="12" width="200"
height="100" click="currentState='Two'" >
<mx:List id="myL2" width="100%" height="100%">
<mx:Array>
<mx:String>1.发往 Ian.</mx:String>
<mx:String>2.发往 Zoe.</mx:String>
</mx:Array>
</mx:List>
</mx:Panel>
<mx:Panel id="p3" title="草稿箱" visible="false" fontSize="12" width="200"
height="100" click="currentState='Three'" >
<mx:List id="myL3" width="100%" height="100%">
<mx:Array>
<mx:String>1.申请.</mx:String>
</mx:Array>
</mx:List>
</mx:Panel>
</mx:Canvas>
</mx:Application>
示例3.9创建了一个信箱界面,包含三个视图模式,分别是收件箱、发件箱和草稿箱。每种模式都会显示两个组件,而隐藏掉另一个组件,这样可以通过点击下方的组件进行视图状态切换。不难看出,整个视图切换的流程是一个固定的循环,因此使用Transition来进行控制会非常方便,但是每次需要显示和隐藏的视图是在不停变化的,设置成固定的效果模式并不能满足要求。这时,我们就可以使用效果过滤器来进行处理。
示例中,对两个效果稽核Sequence分别定义了不同的过滤器,当目标组件隐藏时,执行id为sequence1的效果集,当目标组件显示时,则执行id为sequence2的效果集。即组件从显示到隐藏会执行WipeUp的效果,而从隐藏到显示则会执行Fade的效果。示例的运行效果如图3.15所示。
图3.15 使用效果过滤器
发表评论
-
[转]构建Flex应用的10大误区
2011-05-31 23:29 749原文地址:http://www.infoq ... -
转:flex滤镜:聚光灯效果、放大镜效果、缩放模糊效果、浮雕效果和水波效果
2011-05-30 21:30 1751可惜提供的源代码没有相应的libs包 1:聚光灯效果: 实 ... -
Air File类使用方法
2010-09-06 10:24 2259air file 系统中文件或目 ... -
Flex air修改外部xml文件
2010-09-06 09:35 2103AIR的文件操作不难,看完教程应该可以满足你对文件的所有基本操 ... -
air 读取服务器端文件
2010-09-03 13:44 1022import flash.events.Event; ... -
air下载文件
2010-09-02 10:43 830http://www.code-design.cn/blogd ... -
三维程序/游戏制作基本常识
2010-08-25 13:19 910Furry/DDM君: 很多flash3d初 ... -
FLEX的RIA应用程序中配置文件(*-app.xml)的说明
2010-06-22 16:53 882<?xml version="1.0" ... -
Adobe AIR右键菜单和系统托盘(Tray)功能以及实现方法
2010-05-31 17:21 2125AIR教程 Adobe AIR右键菜单和系统托盘(Tray ... -
Flash Bulider4注册码生成器
2010-05-18 11:03 1820Flash Builder 4正式版发布,很高兴还有简体中文 ... -
FusionCharts中文乱码问题
2010-05-06 11:17 2886从 http://www.infosoftglobal.com ... -
Flex ShareObject简单应用
2010-04-26 17:47 1064[size=medium]Share object一般用来保存 ... -
FLEX问题总汇(1)
2010-04-23 15:17 874论坛一直有些问题有人重复的发帖,今天有空就做了点总结,希望和大 ... -
Flex 开发: 类的反射
2010-04-23 10:34 1038Flex 反射简介 在很多时候反射为程序的动态性提供了一种可 ... -
Flex 3 体验:AdvancedDataGrid的使用(第一部分)
2010-04-22 17:14 1413今天我们要说的是官方文档中用了整章介绍的AdvancedDat ... -
FLEX alive pdf 打印pdf
2010-04-22 10:33 1945FLEX alive pdf 打印pdf ,废话不多说了,代码 ... -
FLEX AIR 连接local SQL database
2010-04-22 10:19 1316FLEX AIR 连接本地LocalSQL实现增删改查,废话不 ... -
将flex页面数据导出到excel
2010-04-20 10:07 1625本例实现将flex中的数据 ... -
FLEX TEXTINPUT restrict(正则表达式,约束,限定)
2010-04-19 16:28 2086通常要对输入TextInput中 ... -
actionscript 中 如何控制数字精度(小数位数)
2010-04-16 16:58 1647很简单的一件事,但是如果不知道的话一样很麻烦。Number包里 ...
相关推荐
#### 视图模式与视图转换:增强交互性 **视图模式**是Flex中用于管理界面布局和状态的一种机制。通过定义不同的视图模式,可以根据应用程序的状态或用户需求切换界面布局,提高用户体验。视图转换控制则是实现视图...
1. 在Flex视图中,新建一个Flex项目,并指定Java源码的根目录。在Flex Builder 3中,LCDS项目旨在将Java J2EE项目与Flex Lcds项目混合。选择"combined"可以将Java和Flex代码放在同一个项目中,简化管理和部署。 2. ...
- 切换到Flex视图,新建Flex Project。 - 在项目设置中,指定Java源代码的根目录。 - 如果选择"combined"模式,Flex和Java代码会一起编译和部署,否则需要单独管理Java代码。 - 配置J2EE服务器,选择Target ...
SpringMVC与Flex整合是构建富互联网应用程序(RIA)的一种常见技术组合,它允许开发者创建交互性强、用户体验良好的Web应用。下面将详细讲解这个项目的背景、核心概念以及整合过程。 **1. SpringMVC框架** ...
- **转换数据对象**:将原始数据转换成视图所需的格式。 - **封装域逻辑**:实现业务逻辑,例如数据验证。 - **避免依赖**:减少与视图和控制器之间的直接依赖,通过通知机制进行通信。 - **视图(View)与中介者...
综上所述,Flex图片查看器的开发涉及到了Flex组件的定制、事件处理、坐标转换、平移与缩放算法、鹰眼视图的实现以及性能优化等多个方面的技术。通过掌握这些知识,开发者可以构建出功能强大且用户友好的图片浏览应用...
Flex Pure MVC框架是一种基于ActionScript 3.0的模型-视图-控制器(MVC)设计模式实现,专为Adobe Flex应用程序设计。Flex是用于构建富互联网应用(RIA)的开发平台,而Pure MVC则是帮助开发者组织和管理代码结构的...
3. **Real-time Data Push**:BlazeDS支持Server-Sent Events和Long Polling,实现数据的实时推送,使Flex客户端能够实时更新视图。 4. **Security**:在整合过程中,确保数据安全是非常重要的。可以通过配置...
3.3.7 类型转换 3.3.8 自检 3.4 面向对象编程 3.4.1 Object类 3.4.2 包和类 3.4.3 类特性 3.4.4 类成员 3.4.5 接口和继承 3.5 本章小结 第4章 运用ActionScript3.0 4.1 Flash...
数据绑定是Flex中一个核心的概念,它简化了用户界面与应用程序数据之间的通信,使得数据的更新能够自动反映在UI上,反之亦然。 在Flex中,数据绑定是一种声明式编程方式,开发者无需编写复杂的事件处理代码,即可...
- **Flex与WebService通信**: 实现Flex应用程序与WebService的通信,支持JSON或XML数据交换。 - **Flex与Ajax交互**: 结合Ajax技术,实现异步数据加载和更新。 #### 六、总结 通过以上内容,我们可以看到Flex不仅...
Flex应用程序通常使用MXML和ActionScript编写,然后由Flex编译器转换为SWF格式,可以在Adobe Flash Player或Adobe AIR环境中运行。 在"flex中文帮助文档"中,你可以找到关于Flex开发的详尽信息。这个PDF文档可能...
- **定义视图与选项卡**:教授如何构建多视图结构,并使用选项卡来组织内容。 - **导航控件、标题控件与操作控件定义**:介绍如何使用这些控件来改善用户导航体验。 - **滚动条的使用**:演示如何添加滚动条,以适应...
这些库允许将Struts2的结果转换为AMF响应,使得Flex客户端可以直接调用Action方法。 3. **Hibernate框架**:在Flex应用中,数据通常由Java的Hibernate进行持久化管理。通过在Java后端创建DAO(数据访问对象),使用...
项目中的"library.swf"文件是Flex编译后的SWF库文件,其中包含了与Google Map API交互的自定义组件或类。SWF是一种二进制格式,用于在Web上展示互动内容,通常由ActionScript(一种面向对象的脚本语言)驱动。在这个...
让我们深入了解一下Flex Tree的用法以及与XML数据结合的方式。 1. **Flex Tree的基本用法** - **创建Tree组件**: 在Flex中,你可以通过在MXML或ActionScript中定义`mx.controls.Tree`组件来创建Tree。 - **数据...
MXML与ActionScript相结合,可以实现视图与逻辑的分离,提高代码的可读性和维护性。 三、Flex组件库 Flex组件库包含大量预先构建的UI组件,如按钮、文本框、面板、数据网格等。这些组件可以根据需求进行定制,以...