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类。如:

 

  1. public class TestEffect extends Effect  
  2.     {  
  3.         public var alp:Number;  
  4.         public var col:uint;  
  5.         public function TestEffect(target:Object=null)  
  6.         {  
  7.             super(target);  
  8.             instanceClass = TestInstance;  
  9.         }  
  10.           
  11.         override protected function initInstance(instance:IEffectInstance):void{  
  12.             super.initInstance(instance);  
  13.             TestInstance(instance).col = this.col;  
  14.             TestInstance(instance).alp = this.alp;  
  15.         }  
  16.     }  
  17.   
  18.   
  19.   
  20. public class TestInstance extends EffectInstance  
  21.     {  
  22.           
  23.         public var alp:Number;  
  24.         public var col:uint;  
  25.           
  26.         public function TestInstance(target:Object)  
  27.         {  
  28.             super(target);  
  29.         }  
  30.           
  31.         override public function play():void{  
  32.             super.play();  
  33.             (target as DisplayObject).alpha = this.alp;  
  34.             var shape:FlexShape = new FlexShape();  
  35.             shape.graphics.beginFill(col,1.0);  
  36.             shape.graphics.drawRect(0,0,(target as DisplayObject).width,(target as DisplayObject).height);  
  37.             shape.graphics.endFill();  
  38.             var uiComp:UIComponent = new UIComponent();  
  39.             uiComp.addChild(shape);  
  40.             UIComponent(target).addChild(uiComp);  
  41.         }  
  42.     }  

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);
              

转载于:https://www.cnblogs.com/hedianwei/p/3807653.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值