Flex4之控制状态转换以及产生动画特效【登录示例】
2012-05-29 10:50
393 查看
话不多说,Flex4的动画效果的确让人赏心悦目,既然是登陆肯定有画面之间的转化,那么在Flex中,这就叫做不同状态之间的变换,本实例中我做的是登陆验证,如果登录失败,则登陆框会出现左右抖动现象,用过MAC电脑的应该知道有这个效果,如果登录成功则出现画面消失,和主页面不同部分从不同方向显示到一起的动画特效
特上全部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"
currentState="loginState">
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
<s:Sequence id="shake" target="{login}">
<s:Move xBy="20" duration="40" />
<s:Move xBy="-20" duration="40"/>
<s:Move xBy="20" duration="40"/>
<s:Move xBy="-20" duration="40"/>
<s:Move xBy="20" duration="40"/>
<s:Move xBy="-20" duration="40"/>
<s:Move xBy="20" duration="40"/>
<s:Move xBy="-20" duration="40"/>
</s:Sequence>
</fx:Declarations>
<fx:Script>
<![CDATA[
function checkLogin():void{
//判断登录是否成功,如果成功就会执行到主页面,在这个过程中会有特效发生、如果登录失败会发生左右抖动现象
if(userName.text=='1'&&passWord.text=='1'){
currentState='mainState';
}else{
shake.play();
}
}
]]>
</fx:Script>
<s:states>
<s:State name="mainState"/>
<s:State name="loginState"/>
</s:states>
<s:transitions>
<!-- 从loginState到mainState所发生的特效变化,在本实例中就是登录成功后所发生的特效 -->
<s:Transition fromState="loginState" toState="mainState">
<!--可以添加一个序列,用来执行多个特效变化 -->
<s:Sequence>
<!--第一步使login面板消失 -->
<s:Parallel>
<s:Fade target="{login}" />
</s:Parallel>
<!--不仅要消失还要移除 -->
<s:RemoveAction target="{login}" />
<!--添加主页面的三项类容,然后逐一从不同方向显示进来 -->
<s:Parallel targets="{[myImg,viewImg,myblog]}">
<s:AddAction />
<s:Fade />
<s:Move target="{myImg}" xFrom="-100"/>
<s:Move target="{viewImg}" yFrom="-100"/>
<s:Move target="{myblog}" xFrom="500"/>
<s:Resize target="{myblog}" widthFrom="456" widthTo="556" />
</s:Parallel>
</s:Sequence>
</s:Transition>
<!--从mainState到mainState所发生的特效变化,在本实例中就是点击注销按钮所发发生的特效 -->
<s:Transition fromState="mainState" toState="loginState">
<s:Sequence>
<!--使主页面各项全部消失 -->
<s:Parallel >
<s:Fade targets="{[myImg,viewImg,myblog]}" />
</s:Parallel >
<!--消失后接着移除-->
<s:RemoveAction targets="{[myImg,viewImg,myblog]}" />
<!--添加登录然后从右边向左边方向逐渐显示出来 -->
<s:Parallel target="{login}">
<s:AddAction />
<s:Fade />
<s:Move xFrom="100" />
</s:Parallel>
</s:Sequence>
</s:Transition>
</s:transitions>
<s:Panel id="login" title="登录窗口"
x="27" y="40"
width="250" height="200"
includeIn="loginState">
<s:Label x="22" y="32" text="用户名:" />
<s:TextInput x="74" y="27" id="userName"/>
<s:Label x="22" y="73" text="密码:"/>
<s:TextInput x="74" y="68" id="passWord"/>
<s:Button x="74" y="107" id="loginBtn" label="登录" click="checkLogin()"/>
</s:Panel>
<s:Label text="请登录用户" fontSize.mainState="20" color.mainState="#D71B1B" x.mainState="22" y.mainState="10" text.mainState="欢迎你的到来" x.loginState="27" y.loginState="10" fontSize.loginState="20" fontWeight.loginState="normal"
color.loginState="#9A0707"/>
<s:Button excludeFrom="loginState"
x="875" y="569"
label="注销"
click="currentState='loginState'"/>
<s:Panel id="myblog" title="我的博客"
includeIn="mainState"
x="378" y="230"
width="556" height="291">
<s:Label x="5" y="11"
text="周杰伦的迷你小博客--畅想移动生活"
fontWeight="bold"
fontSize="25"
color="#1A1FD8"
chromeColor="#CCCCCC"/>
</s:Panel>
<mx:Image includeIn="mainState" x="10" y="38" source="lx2.jpg" id="myImg" width="326" height="483"/>
<mx:Image includeIn="mainState" x="378" y="13" source="lx2.jpg" width="556" height="209" id="viewImg"/>
</s:Application>
转自:http://javacrazyer.iteye.com/blog/700003
特上全部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"
currentState="loginState">
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
<s:Sequence id="shake" target="{login}">
<s:Move xBy="20" duration="40" />
<s:Move xBy="-20" duration="40"/>
<s:Move xBy="20" duration="40"/>
<s:Move xBy="-20" duration="40"/>
<s:Move xBy="20" duration="40"/>
<s:Move xBy="-20" duration="40"/>
<s:Move xBy="20" duration="40"/>
<s:Move xBy="-20" duration="40"/>
</s:Sequence>
</fx:Declarations>
<fx:Script>
<![CDATA[
function checkLogin():void{
//判断登录是否成功,如果成功就会执行到主页面,在这个过程中会有特效发生、如果登录失败会发生左右抖动现象
if(userName.text=='1'&&passWord.text=='1'){
currentState='mainState';
}else{
shake.play();
}
}
]]>
</fx:Script>
<s:states>
<s:State name="mainState"/>
<s:State name="loginState"/>
</s:states>
<s:transitions>
<!-- 从loginState到mainState所发生的特效变化,在本实例中就是登录成功后所发生的特效 -->
<s:Transition fromState="loginState" toState="mainState">
<!--可以添加一个序列,用来执行多个特效变化 -->
<s:Sequence>
<!--第一步使login面板消失 -->
<s:Parallel>
<s:Fade target="{login}" />
</s:Parallel>
<!--不仅要消失还要移除 -->
<s:RemoveAction target="{login}" />
<!--添加主页面的三项类容,然后逐一从不同方向显示进来 -->
<s:Parallel targets="{[myImg,viewImg,myblog]}">
<s:AddAction />
<s:Fade />
<s:Move target="{myImg}" xFrom="-100"/>
<s:Move target="{viewImg}" yFrom="-100"/>
<s:Move target="{myblog}" xFrom="500"/>
<s:Resize target="{myblog}" widthFrom="456" widthTo="556" />
</s:Parallel>
</s:Sequence>
</s:Transition>
<!--从mainState到mainState所发生的特效变化,在本实例中就是点击注销按钮所发发生的特效 -->
<s:Transition fromState="mainState" toState="loginState">
<s:Sequence>
<!--使主页面各项全部消失 -->
<s:Parallel >
<s:Fade targets="{[myImg,viewImg,myblog]}" />
</s:Parallel >
<!--消失后接着移除-->
<s:RemoveAction targets="{[myImg,viewImg,myblog]}" />
<!--添加登录然后从右边向左边方向逐渐显示出来 -->
<s:Parallel target="{login}">
<s:AddAction />
<s:Fade />
<s:Move xFrom="100" />
</s:Parallel>
</s:Sequence>
</s:Transition>
</s:transitions>
<s:Panel id="login" title="登录窗口"
x="27" y="40"
width="250" height="200"
includeIn="loginState">
<s:Label x="22" y="32" text="用户名:" />
<s:TextInput x="74" y="27" id="userName"/>
<s:Label x="22" y="73" text="密码:"/>
<s:TextInput x="74" y="68" id="passWord"/>
<s:Button x="74" y="107" id="loginBtn" label="登录" click="checkLogin()"/>
</s:Panel>
<s:Label text="请登录用户" fontSize.mainState="20" color.mainState="#D71B1B" x.mainState="22" y.mainState="10" text.mainState="欢迎你的到来" x.loginState="27" y.loginState="10" fontSize.loginState="20" fontWeight.loginState="normal"
color.loginState="#9A0707"/>
<s:Button excludeFrom="loginState"
x="875" y="569"
label="注销"
click="currentState='loginState'"/>
<s:Panel id="myblog" title="我的博客"
includeIn="mainState"
x="378" y="230"
width="556" height="291">
<s:Label x="5" y="11"
text="周杰伦的迷你小博客--畅想移动生活"
fontWeight="bold"
fontSize="25"
color="#1A1FD8"
chromeColor="#CCCCCC"/>
</s:Panel>
<mx:Image includeIn="mainState" x="10" y="38" source="lx2.jpg" id="myImg" width="326" height="483"/>
<mx:Image includeIn="mainState" x="378" y="13" source="lx2.jpg" width="556" height="209" id="viewImg"/>
</s:Application>
转自:http://javacrazyer.iteye.com/blog/700003
相关文章推荐
- Android NDK——App端通过串口通信完成实时控制单片机上LED灯的颜色及灯光动画特效
- ELK菜鸟手记 (三) - X-Pack权限控制之给Kibana加上登录控制以及index_not_found_exception问题解决
- Silverlight 简明教程(3) -- 资源、样式控制、视觉状态以及部署
- 單純使用PHP腳本不借助任何外部库或图片以及字体产生动画效果的Gif验证码图片
- 第10章 线程控制(1)_线程状态转换
- 嵌入式 指定网卡名称的信息以及网络连通状态以及重连机制代码示例
- 视频特效制作:如何给视频添加边框、水印、动画以及3D效果
- Java多线程之线程的状态以及线程间协作通信导致的线程状态转换
- 操作系统进程的概念,进程的状态及状态转换,进程控制
- Hibernate的三种状态以及状态的转换
- Android 用sp存储登录状态以及退出登录
- css3 2d转换3d转换以及动画的知识点汇总
- Sharedpreferences轻量级数据库 基本操作 可实现保存登录状态 保存少量数据 比如密码 第一次登录动画,第二次不显示
- 手势检测实现相册的左右滑动(并加上移动与旋转的特效) 首先,activity_main.xml里,使用ViewFlipper组件(可使用动画控制多个组件之间的切换效果) <?xml version="
- cocos2d-x 2.2 CocoStudio动画和界面编辑器按钮控制以及场景编辑器使用
- Linux的进程,线程以及调度(fork与僵尸,内存泄漏,task结构体,停止状态与作业控制)
- [转]微信小程序登录数据解密以及状态维持
- 操作系统进程的概念,进程的状态及状态转换,进程控制
- 多线程中的状态转换以及常见的面试题
- 线程的状态以及状态间的转换