FLEX 特效
一、简介:
flex特效是ria应用程序的rich的重要组成部分。
EffectManager类管理所有的特效实例以避免不必要的定时器和方法调用造成的内内存使用过大。一个效果由两部分组成:一是效果的EffectInstance,它包含了效果的基本信息,标识出要执行什么,怎么执行,是移动还是渐变等。二是Effect类,它在此扮演工厂的角色,来控制效果的执行等,如何时执行、何时删除等。
二、播放步骤:
一个效果的播放共有四个步骤。
1)为每一个目标组件创建一个EffectInstance实例。如果一个效果的目标组件是多个的话,就创建多个EffectInstance实例。
2) 框架从工厂对象里复制所有的配置信息到每一个EffectInstance实例。包括执行时间、重复次数等信息。
3) 效果在对象上使用第一步创建的EffectInstance实例对象播放。
4) 播放结束,框架、EffectManager类将删除播放完的实例对象。
三、常见效果类:
AnimateProperty:动画属性
Blur :模糊
Desolve :溶解
Fade :凋零
Glow :发光
Iris :瞳孔放大缩小
Move :移动
Pause :定格
Resize :改变大小
Rotate :旋转
SoundEffect :音效
(WipeLeft, WipeRight, WipeUp, WipeDown) :擦拭
Zoom :放大缩小
Sequence:顺序播放组合
Parallel:同时播放组合
四、常见触发动画效果方式:
AddedEffect :加入容器
creationCompleteEffect :创建完成
focusInEffect :获得键盘输入
focusOutEffect :失去键盘输入
hideEffect :visable属性设置为false
mouseDownEffect :鼠标按下
mouseUpEffect :鼠标按起
moveEffect :被拖动
resizeEffect :重新设定大小
removedEffect :被移除
rollOutEffect :鼠标移到控件外
rollOverEffect :鼠标移到控件上
showEffect :visable属性设置为true
五、部分示例:
1:glow(发光)
代码:
<mx:Glow id="glow" duration="1000"
alphaFrom="0.6" alphaTo="0.2"
blurXFrom="0.0" blurXTo="50.0"
blurYFrom="0.0" blurYTo="50.0"
color="0xffffff"/>
duratuion 是特效的时间 1000 毫秒
alphaFrom 是透明度从 0.6 开始
alphaTo 是透明度到 0.2
blurXFrom 是X放向的模糊开始位置(相对于控件的)
blurXTo 是X放向的模糊结束位置(相对于控件的)
blurYFrom 是Y放向的模糊开始位置(相对于控件的)
blurYTo 是Y放向的模糊结束位置(相对于控件的)
color 是发光的颜色
2:Sequence (顺序) Bounce(弹跳)
代码:
import mx.effects.easing.*;
<mx:Sequence id="movePauseMove">
<mx:Move yBy="-150" duration="1000" easingFunction="Bounce.easeOut"/>
<mx:Move yBy="150" duration="1000" easingFunction="Bounce.easeIn"/>
</mx:Sequence>
yBy 是作用在Y方向。
duratuion 是特效的时间 1000 毫秒
easingFunction 是松开动作
Bounce.easeOut 是跳出的动作
Bounce.easeIn 是跳回的动作
作用到控件:
<mx:Image source="../assets/zh_cn_ptn_090722.png"
mouseDownEffect="{movePauseMove}"
id="image4"/>
六、自定义效果:
每个效果都是由两个元素组成的,分别是EffectInstance效果实例与Effect类工厂。所以在自定义效果的时候,也要成对的创建这两个类的子类,并分别继承自EffectInstance类和Effect类。如:
- public class TestEffect extends Effect
- {
- public var alp:Number;
- public var col:uint;
- public function TestEffect(target:Object=null)
- {
- super(target);
- instanceClass = TestInstance;
- }
- override protected function initInstance(instance:IEffectInstance):void{
- super.initInstance(instance);
- TestInstance(instance).col = this.col;
- TestInstance(instance).alp = this.alp;
- }
- }
- public class TestInstance extends EffectInstance
- {
- public var alp:Number;
- public var col:uint;
- public function TestInstance(target:Object)
- {
- super(target);
- }
- override public function play():void{
- super.play();
- (target as DisplayObject).alpha = this.alp;
- var shape:FlexShape = new FlexShape();
- shape.graphics.beginFill(col,1.0);
- shape.graphics.drawRect(0,0,(target as DisplayObject).width,(target as DisplayObject).height);
- shape.graphics.endFill();
- var uiComp:UIComponent = new UIComponent();
- uiComp.addChild(shape);
- UIComponent(target).addChild(uiComp);
- }
- }
public class TestEffect extends Effect
{
public var alp:Number;
public var col:uint;
public function TestEffect(target:Object=null)
{
super(target);
instanceClass = TestInstance;
}
override protected function initInstance(instance:IEffectInstance):void{
super.initInstance(instance);
TestInstance(instance).col = this.col;
TestInstance(instance).alp = this.alp;
}
}
public class TestInstance extends EffectInstance
{
public var alp:Number;
public var col:uint;
public function TestInstance(target:Object)
{
super(target);
}
override public function play():void{
super.play();
(target as DisplayObject).alpha = this.alp;
var shape:FlexShape = new FlexShape();
shape.graphics.beginFill(col,1.0);
shape.graphics.drawRect(0,0,(target as DisplayObject).width,(target as DisplayObject).height);
shape.graphics.endFill();
var uiComp:UIComponent = new UIComponent();
uiComp.addChild(shape);
UIComponent(target).addChild(uiComp);
}
}
七、其它:
1)当想手动播放某效果时,调用效果实例的play方法即可,为了稳定,一般在调用play方法前先调用一下end,来保证先前效果已结束。
2) 当给对象添加触发效果方式时:uicompnent.setStyle("触发方式",特效对象);
3)运用组合效果(Sequence与Parallel)时,调用该效果的addChild方法即可,将子效果添加的组合效果对象中。如:
Sequence.addChild(move);
Sequence.addChild(glow);
FLEX 特效的更多相关文章
- 个人收藏的flex特效网址【经典中的极品】
http://www.noupe.com/adobe/flex-developers-toolbox-free-components-themes-and-tutorials.html经典中的经典 h ...
- Flex里的特效
Flex中提供了丰富的效果组件.因为效果是一种依据时间渐变的过程,因此全部效果都具有duration属性,用来设置播放时间(以毫秒为单位).也能够通过设置repeatCount属性和repeatD ...
- FLEX各种特效集合
http://www.noupe.com/adobe/flex-developers-toolbox-free-components-themes-and-tutorials.html经典中的经典 h ...
- 多栏多列布局(display:flex)
display:flex 多栏多列布局浏览器支持情况:火狐直接支持w3c无前缀写法,谷歌和opera支持-webkit- 前缀写法,比较适合移动端开发使用, display:flex 这个牛逼的css ...
- paip.关于动画特效原理 html js 框架总结
paip.关于动画特效原理 html js 框架总结 1. 动画框架的来源:flex,jqueryui 3 2. 特效的分类 3 2.1. Property effects 动态改变一个或多个目标对象 ...
- display:flex 多栏多列布局
转自:http://www.360doc.com/content/14/0811/01/2633_400926000.shtml display:flex 多栏多列布局浏览器支持情况:火狐直接支持w3 ...
- Flex开发自定义控件
前期准备: 点击File菜单 -> New -> MXML Component,然后弹出一个对话框. 在对话框中输入组件名,选择此组件继承的类型,如:Canvas,DataGrid,Com ...
- Flex应用一览表
1.Flex控件之repeater和radioButton控件应用 2.Flex之DataGrid和Tree控件的数据源XML格式 3.Flex控件之combobox应用 4.转:Flex的Arra ...
- 150个JS特效脚本
收集了其它一些不太方便归类的JS特效,共150个,供君查阅. 1. simplyScroll simplyScroll这个jQuery插件能够让任意一组元素产生滚动动画效果,可以是自动.手动滚动,水平 ...
随机推荐
- install kinect driver for ARM---38
原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/ The video describes connecting a Microsoft Kinect to ...
- leetcode 137. Single Number II ----- java
Given an array of integers, every element appears three times except for one. Find that single one. ...
- MySQL二进制日志的备份和恢复
二进制日志:记录数据库修改的相关操作,作用是即时点回复,主从复制 可以按时间滚动,也可以按大小滚动 server-id:服务器身份标识 一.二进制文件的删除方法,千万不要手动删除 PURGE BINA ...
- Objective-c——UI基础开发第六天(UITableView)
一.UITableView的简单使用 显示要素: 1.显示多少给区组 2.显示多少行数据 3.每行显示什么内容 代理不会提醒你有什么方法没调用,但是UITableViewDataSource会 1)用 ...
- PHP迭代
计算1到10的和: <?php function f($n) { $before_1 = 1; $before_2 = 1; for( $i = 3;$i <= $n;++$i ) { $ ...
- 【P1813】8的倍数
容斥原理,居然没想到……要补一下数论了 原题: 小x最近对数字8很感兴趣,有8进制,2008奥运会之类的.现在小x想知道,在[x,y]区间里,有多少个数能被8整除.小y觉得题目太简单,于是给出n个其他 ...
- 错误:无法访问android.app.Activity 找不到android.app.Activity的类文件
视频里面在工程ndk22/bin/classes中 运行javah com.cn.ndk22.Ndk22.Activity ,出现了.h文件 但是我在bin/classes目录中运行javah 时出 ...
- Redis server&Client executions
https://www.nuget.org/packages/Microsoft.Extensions.Caching.Redis/ https://github.com/StackExchange/ ...
- How to drop a PostgreSQL database if there are active connections to it?
1.PostgreSQL 9.1 and below: SELECT pg_terminate_backend(pg_stat_activity.procpid) FROM pg_stat_activ ...
- 使用iostat分析IO性能
对于I/O-bond类型的进程,我们经常用iostat工具查看进程IO请求下发的数量.系统处理IO请求的耗时,进而分析进程与操作系统的交互过程中IO方面是否存在瓶颈. 下面通过iostat命令使用实例 ...