`
zhanghan
  • 浏览: 192234 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

Flex学习笔记_06 使用行为对象和动画效果_模糊、发光效果

    博客分类:
  • Flex
阅读更多

6.3.1 模糊效果和发光效果的运用实例
Blur 模糊效果 和 Glow 发光效果都运用了Flash Player 内置的filter滤镜功能,继承于 TweenEffect 对象。TweenEffect 对象是所有形变效果的父类,它的子类占据了动画效果的绝大部分。


Blur 模糊效果
Xml代码 复制代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initUI()">  
  3.   
  4.     <mx:Style source="style.css" />  
  5.       
  6.     <mx:Script>  
  7.         <![CDATA[  
  8.             private var handlerEnd:Boolean = true;  
  9.             private var isReverse:Boolean = false;  
  10.             //初始化函数  
  11.             private function initUI():void{  
  12.                 //指定目标对象,[]是数组定义符号  
  13.                 //[myPane]表示一个只含有一个元素的数组  
  14.                 Effect_Blur.targets = [myPanel];                 
  15.                 //var arr:Array = new Array();  
  16.                 //arr.push(myPanel);  
  17.             }  
  18.             //开始播放动画效果  
  19.             internal function startBlur():void{  
  20.                 handlerEnd = true;                 
  21.                 Effect_Blur.play();  
  22.             }  
  23.             //执行动画播放结束后的动作  
  24.             internal function endBlur():void{  
  25.                 if(handlerEnd){  
  26.                     //反向变化  
  27.                     isReverse = !isReverse;  
  28.                     Effect_Blur.play(null,isReverse);                     
  29.                 }  
  30.             }  
  31.             //停止按钮的动作  
  32.             internal function stopBlur():void{  
  33.                 handlerEnd = false;  
  34.                 Effect_Blur.end();  
  35.                 pauseBtn.label = "暂停";  
  36.                 //清空滤镜,消除模糊效果,将myPanel还原到原始状态  
  37.                 myPanel.filters = [];  
  38.             }  
  39.             //暂停按钮的动作  
  40.             internal function pauseHandler():void{  
  41.                 if(!Effect_Blur.isPlaying){  
  42.                     return;  
  43.                 }  
  44.                 if(pauseBtn.label == "暂停"){  
  45.                     pauseBtn.label = "继续";  
  46.                     Effect_Blur.pause();  
  47.                 }else{  
  48.                     pauseBtn.label = "暂停";  
  49.                     Effect_Blur.resume();  
  50.                 }  
  51.             }  
  52.         ]]>  
  53.     </mx:Script>  
  54.     <mx:Blur id="Effect_Blur" effectEnd="endBlur()"  
  55.         blurXFrom="0" blurXTo="30" blurYFrom="0" blurYTo="30" duration="1500"/>  
  56.     <mx:Panel id="myPanel" styleName="imgPanel" x="30" y="42" width="232" height="215" layout="absolute" title="图片面板">  
  57.         <mx:Image x="0" y="10" source="tree.jpg"/>  
  58.         <mx:Label x="0" y="109" text="walking tree"/>  
  59.     </mx:Panel>  
  60.     <mx:Button click="startBlur()" x="30" y="275" label="开始" width="50"/>  
  61.       
  62.     <mx:Button click="stopBlur()" x="124" y="275" label="停止" width="48"/>  
  63.     <mx:Button click="pauseHandler()" x="214" y="275" label="暂停" width="48" id="pauseBtn"/>  
  64.       
  65. </mx:Application>  
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initUI()">

    <mx:Style source="style.css" />
   
    <mx:Script>
        <![CDATA[
            private var handlerEnd:Boolean = true;
            private var isReverse:Boolean = false;
            //初始化函数
            private function initUI():void{
                //指定目标对象,[]是数组定义符号
                //[myPane]表示一个只含有一个元素的数组
                Effect_Blur.targets = [myPanel];               
                //var arr:Array = new Array();
                //arr.push(myPanel);
            }
            //开始播放动画效果
            internal function startBlur():void{
                handlerEnd = true;               
                Effect_Blur.play();
            }
            //执行动画播放结束后的动作
            internal function endBlur():void{
                if(handlerEnd){
                    //反向变化
                    isReverse = !isReverse;
                    Effect_Blur.play(null,isReverse);                   
                }
            }
            //停止按钮的动作
            internal function stopBlur():void{
                handlerEnd = false;
                Effect_Blur.end();
                pauseBtn.label = "暂停";
                //清空滤镜,消除模糊效果,将myPanel还原到原始状态
                myPanel.filters = [];
            }
            //暂停按钮的动作
            internal function pauseHandler():void{
                if(!Effect_Blur.isPlaying){
                    return;
                }
                if(pauseBtn.label == "暂停"){
                    pauseBtn.label = "继续";
                    Effect_Blur.pause();
                }else{
                    pauseBtn.label = "暂停";
                    Effect_Blur.resume();
                }
            }
        ]]>
    </mx:Script>
    <mx:Blur id="Effect_Blur" effectEnd="endBlur()"
        blurXFrom="0" blurXTo="30" blurYFrom="0" blurYTo="30" duration="1500"/>
    <mx:Panel id="myPanel" styleName="imgPanel" x="30" y="42" width="232" height="215" layout="absolute" title="图片面板">
        <mx:Image x="0" y="10" source="tree.jpg"/>
        <mx:Label x="0" y="109" text="walking tree"/>
    </mx:Panel>
    <mx:Button click="startBlur()" x="30" y="275" label="开始" width="50"/>
   
    <mx:Button click="stopBlur()" x="124" y="275" label="停止" width="48"/>
    <mx:Button click="pauseHandler()" x="214" y="275" label="暂停" width="48" id="pauseBtn"/>
   
</mx:Application>
 
动画效果的target 属性,用来指定作用对象,而targets 属性可以将动画效果一次运用在多个对象上。targets 是一个Array 数组。

Blur 对象的这些属性:blurXFrom、blurXTo、blurYFrom、blurYTo 定义了始末位置的模糊距离。

Effect 对象的play 方法中,第一个参数表示目标对象,如果之前已经指定,可以直接用null代替。第二个参数isReverse 表示播放方向,true:逆向播放,falsh:正向播放。

filters属性代表目标对象当前使用的滤镜集合。它是所有可视化对象的公有属性,以数组的形式存储了自身所有的滤镜数据。如果使用[]给他赋值,代表清除了目标所有滤镜效果的作用。


Glow 发光效果

Xml代码 复制代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initUI()">  
  3.     <mx:Style source="style.css" />  
  4.       
  5.     <mx:Script>  
  6.         <![CDATA[  
  7.             private var handlerEnd:Boolean = true;  
  8.             private var isReverse:Boolean = false;  
  9.              
  10.             private function initUI():void{  
  11.                 Effect_Blur.target = myPanel;  
  12.                 Effect_Glow.target = myPanel;  
  13.             }  
  14.             //开始播放动画效果  
  15.             internal function startBlur():void{  
  16.                 //在播放函数中指定目标对象,[]是数组定义符号,[myPane]  
  17.                 //var arr:Array = new Array();  
  18.                 //arr.push(myPanel);  
  19.                 handlerEnd = true;                 
  20.                 Effect_Blur.play();  
  21.                 Effect_Glow.play();  
  22.             }  
  23.             //执行动画播放结束后的动作  
  24.             internal function endBlur():void{  
  25.                 if(handlerEnd){  
  26.                     //反向播放  
  27.                     isReverse = !isReverse;  
  28.                     Effect_Blur.play(null,isReverse);                     
  29.                 }  
  30.             }  
  31.             internal function stopBlur():void{  
  32.                 handlerEnd = false;  
  33.                 Effect_Blur.end();  
  34.                  
  35.                 var tmpArr:Array = myPanel.filters;  
  36.                 //遍历数组  
  37.                 for (var i:uint = 0; i < tmpArr.length; i++) {  
  38.                     //is 是类型判断符号,指明对象是否是指定对象的实例或指定对象子类的实例  
  39.                     if (tmpArr[i] is BlurFilter) {  
  40.                         //如果是,从数组中删除。  
  41.                         //splice(i,1),删除从i位置开始的一个元素  
  42.                         tmpArr.splice(i,1);  
  43.                         i = i-1;  
  44.                     }  
  45.                 }  
  46.                 //将新的数据赋予对象,新的滤镜生效  
  47.                 //myPanel.filters = tmpArr;  
  48.                 myPanel.filters = []  
  49.             }  
  50.         ]]>  
  51.     </mx:Script>  
  52.       
  53.     <mx:Blur id="Effect_Blur" effectEnd="endBlur()"  
  54.         blurXFrom="0" blurXTo="30" blurYFrom="0" blurYTo="30" duration="1500"/>  
  55.     <mx:Glow id="Effect_Glow" alphaFrom="1.0" alphaTo="0.3"  
  56.         blurXFrom="0.0" blurXTo="30.0"  
  57.         blurYFrom="0.0" blurYTo="30.0" color="0x6633ff" />  
  58.       
  59.     <mx:Panel id="myPanel" styleName="imgPanel" x="30" y="42" width="232" height="215" layout="absolute" title="图片面板">  
  60.         <mx:Image x="0" y="10" source="tree.jpg"/>  
  61.         <mx:Label x="0" y="109" text="walking tree"/>  
  62.     </mx:Panel>  
  63.     <mx:Button click="startBlur()" x="30" y="275" label="开始" width="50"/>  
  64.       
  65.     <mx:Button click="stopBlur()" x="124" y="275" label="停止" width="48"/>  
  66.       
  67. </mx:Application>  
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initUI()">
    <mx:Style source="style.css" />
   
    <mx:Script>
        <![CDATA[
            private var handlerEnd:Boolean = true;
            private var isReverse:Boolean = false;
           
            private function initUI():void{
                Effect_Blur.target = myPanel;
                Effect_Glow.target = myPanel;
            }
            //开始播放动画效果
            internal function startBlur():void{
                //在播放函数中指定目标对象,[]是数组定义符号,[myPane]
                //var arr:Array = new Array();
                //arr.push(myPanel);
                handlerEnd = true;               
                Effect_Blur.play();
                Effect_Glow.play();
            }
            //执行动画播放结束后的动作
            internal function endBlur():void{
                if(handlerEnd){
                    //反向播放
                    isReverse = !isReverse;
                    Effect_Blur.play(null,isReverse);                   
                }
            }
            internal function stopBlur():void{
                handlerEnd = false;
                Effect_Blur.end();
               
                var tmpArr:Array = myPanel.filters;
                //遍历数组
                for (var i:uint = 0; i < tmpArr.length; i++) {
                    //is 是类型判断符号,指明对象是否是指定对象的实例或指定对象子类的实例
                    if (tmpArr[i] is BlurFilter) {
                        //如果是,从数组中删除。
                        //splice(i,1),删除从i位置开始的一个元素
                        tmpArr.splice(i,1);
                        i = i-1;
                    }
                }
                //将新的数据赋予对象,新的滤镜生效
                //myPanel.filters = tmpArr;
                myPanel.filters = []
            }
        ]]>
    </mx:Script>
   
    <mx:Blur id="Effect_Blur" effectEnd="endBlur()"
        blurXFrom="0" blurXTo="30" blurYFrom="0" blurYTo="30" duration="1500"/>
    <mx:Glow id="Effect_Glow" alphaFrom="1.0" alphaTo="0.3"
        blurXFrom="0.0" blurXTo="30.0"
        blurYFrom="0.0" blurYTo="30.0" color="0x6633ff" />
   
    <mx:Panel id="myPanel" styleName="imgPanel" x="30" y="42" width="232" height="215" layout="absolute" title="图片面板">
        <mx:Image x="0" y="10" source="tree.jpg"/>
        <mx:Label x="0" y="109" text="walking tree"/>
    </mx:Panel>
    <mx:Button click="startBlur()" x="30" y="275" label="开始" width="50"/>
   
    <mx:Button click="stopBlur()" x="124" y="275" label="停止" width="48"/>
   
</mx:Application>
 
Glow 对象的参数比较多,主要是设置光颜色color、透明度alphaFrom alphaTo、水平和垂直的发光距离blurXFrom、blurXTo、blurYFrom、blurYTo。
分享到:
评论

相关推荐

    Flex学习笔记_09 数据绑定_概念、使用 - Java&Flex - JavaEye技术网站

    Flex学习笔记_09 数据绑定_概念、使用 - Java&Flex - JavaEye技术网站 希望对爱好有帮助!!

    amcharts_flex_components_1.8.3.3

    《深入解析amcharts_flex_components_1.8.3.3:打造卓越的Flex图表体验》 在IT行业中,数据可视化...在深入学习和实践中,开发者可以不断探索amCharts_flex_components的潜力,为各类项目带来更出色的数据展现效果。

    flex,怎么学习flex,Flex_3_Cookbook_中文版

    学习了一段时间的flex... 上传点资源,大家分享。 flex,怎么学习flex,Flex_3_Cookbook_中文版

    flex3-cn-api..zip_flex_flex 3 api_flex3 api_flex3 a_flex3 api

    7. **动画和效果**: Flex 3提供了Animate、Fade、Slide等动画效果,可以创建丰富的动态交互体验。 8. **事件模型**: Flex 3使用事件驱动模型,通过Event和EventListener接口处理用户交互和其他系统事件,增强了程序...

    dh.rar_flex cool me_flex menu skin_flex 导航_flex4 menu_flex4 menu

    Flex是Adobe公司开发的一种基于ActionScript的开源框架,主要用于构建富互联网应用程序...对于Flex开发者来说,这是一个极好的学习和参考资源,可以深入理解如何在Flex4中创建自定义菜单、皮肤以及数据可视化组件。

    amcharts_flex_components_1.8.1.3

    在开发过程中,使用amCharts Flex组件可以极大地提升数据可视化的效率和效果。开发者可以利用组件提供的API来设置数据源、定义图表样式、添加交互事件,甚至创建复杂的动画效果。此外,amCharts还支持响应式设计,...

    amcharts_flex_components_1.8.3.4

    - **动画效果**:内置动画效果使数据呈现更加生动,吸引用户的注意力。 - **自定义能力**:开发者可以自定义颜色、样式、标签、工具提示等,实现高度个性化设计。 - **数据驱动**:amcharts支持动态数据加载,能...

    flex学习笔记 flex学习总结 flex学习教程

    在本教程中,"作者说明.txt"可能包含了作者的学习心得和使用建议,"Flex中的架包"可能是Flex项目的源码或库文件,供读者参考和学习。通过阅读这些材料,你将能够逐步掌握Flex开发技术,踏上Flex开发之旅。

    Flex学习PPT_wildh

    7. **图形和动画**:Flex提供了强大的图形绘制API,可以创建复杂的矢量图形和动画效果,使得应用程序具有高度的视觉吸引力。 8. **服务调用**:Flex应用程序可以与后端服务器进行通信,通过HTTP、SOAP、AMF等协议...

    flex_php_mysql.rar_flex_flex_php_mysql_php mysql_php+mysql_php增删

    综上所述,这个项目涵盖了前端交互设计、后端业务逻辑处理以及数据库操作等多方面的技能,是学习和实践Web应用开发的良好案例。开发者需要具备Flex、PHP和MySQL的基础知识,并理解如何将它们有效地结合在一起实现...

    FLEX学习笔记

    《FLEX学习笔记》 FLEX,全称为Flex Builder,是由Adobe公司开发的一款基于MXML和ActionScript的开源框架,用于构建富互联网应用程序(RIA)。它允许开发者创建具有交互性、响应性和丰富用户体验的Web应用。FLEX的...

    flex中动画效果

    在 Flex 中,动画效果主要通过 `Effect` 类来实现,它们可以应用于组件或容器,以实现各种动态行为。以下是一些主要的 Flex 动画效果及其详细解释: 1. **Zoom**:缩放效果,可以将组件放大或缩小。在示例中,`Zoom...

    Flex动画效果教程

    通过深入学习和实践以上知识点,开发者能够充分利用Flex的动画功能,创造出富有吸引力和交互性的应用程序。阅读“flex动画效果与变幻.pdf”文件,将提供更详细的步骤和实例,帮助你进一步掌握Flex动画的精髓。

    Flex学习笔记-基本语法

    在本文中,我们将深入探讨Flex学习过程中的基础语法,特别是从AS2到AS3的变化。 首先,ActionScript 3(AS3)是AS的一个重大升级,它引入了完全的面向对象编程(OOP)概念。这意味着AS3具有类、继承、封装和多态性...

    Flex_3_with_Java Flex_3_with_Java

    Flex 3 提供了一整套 UI 控件库,这些控件具有丰富的外观和行为,使得开发者可以快速构建美观、功能强大的用户界面。此外,Flex 还提供了强大的数据绑定机制,使得开发者可以轻松地将界面元素与后端数据源进行绑定,...

    flex_fck_editor 例子

    开发者可以定制链接的验证规则和行为。 四、服务器端集成 1. 数据交互:服务器端需要处理来自Flex_FCK_Editor的请求,保存或读取编辑器的内容。这通常涉及到HTTP服务或AMF(Action Message Format)通信。 2. ...

    Demo.rar_3d_flex_flex Graphic._pv3d flex_pv3d fl

    描述中提到“利用PV3D做的flex DEMO 实现了#3D特效”,进一步确认了这个项目是使用Adobe Flex技术和Papervision3D(PV3D)库创建的一个3D效果展示。 Flex是一种基于ActionScript 3.0的开源框架,用于构建富互联网...

    Oracle ERP_EBS常用表表名

    * fnd_id_flex_segments where id_flex_code=""GL#"" and id_flex_num=50671 * fnd_profile_options_vl * fnd_concurrent_programs 法度表 * fnd_concurrent_requests 恳求表 * fnd_concurrent_processes 过程表 --...

    butterfly-flex_flex_butterfly_fluent翅膀_蝴蝶翅膀_

    标题中的“butterfly-flex_flex_butterfly_fluent翅膀_蝴蝶翅膀_”似乎是一个项目或文件夹的命名,它涵盖了几个关键词,分别是“flex”、“butterfly”、“fluent”以及“翅膀”。这些关键词指向了本次讨论的核心...

    Flex新手教程_入门级学习笔记

    ### Flex新手教程_入门级学习笔记 #### ActionScript核心概念 **ActionScript(简称AS)** 是一种面向对象的编程语言,主要用于开发Flex应用程序。掌握AS的基础知识对于学习Flex至关重要。 ##### 类和对象 (Class...

Global site tag (gtag.js) - Google Analytics