模糊效果

<? xml version="1.0" encoding="utf-8" ?>
< mx:Application  xmlns:mx ="http://www.adobe.com/2006/mxml"  layout ="absolute"  creationComplete ="initUI()" >
    
< mx:Script >
        
<![CDATA[
            private var handlerEnd:Boolean=true;//标示变量,是否处于动画的结束事件
            private var isReverse:Boolean=false;//记录当前的播放状态
            private function initUI():void{
                //blur_effect.targets=[myPanel];//[]是数组的快捷定义方式,[myPanel]表示数组中只有一个元素,既是mypanel
                /*还可以这样写
                private var array:Array=new Array();
                array.push("myPanel");
                blur_effect.targets=array;
                */
                
                glow_effect.target=myPanel;
                blur_effect.target=myPanel;
            }
            //开始播放动画
            private function startBlur():void{
                handlerEnd=true;//handlerEnd为true,当播放结束时处理结束事件
                blur_effect.play();
                glow_effect.play();
            }
            //结束播放
            private function stopBlur():void{
                handlerEnd=false;//不再处理结束事件,必须在end之前修改 handlerEnd为false,否则end方法还将激活effectEnd事年,造成死循环
                blur_effect.end();
                btnPause.label="暂停";
                //第一种消除滤镜的方法
                //myPanel.filters=[];
                //[]代表一个空的数组,被指为filters的值,它起到将myPanel的滤镜全部清除,写这步的目的是为了实现点stop后,不再有模糊效果。
                //filters属性代表目标对象当前使用的滤镜的集合,它是所有可视化对象的公有属性,以数组的形式储存了自身所有的滤镜数据
                
                //如果对象使用了其它滤镜,希望保存下来,方法是:先获得对象的滤镜列表,然后对这个列表地行循环判断,如果是想删除的滤镜,则删除
                //第二种消除滤镜的做法:
                var tempArray:Array=myPanel.filters;//先建立一个中间变量存放当前的滤镜数据
                for(var i:uint=0;i<tempArray.length;i++){
                    if(tempArray[i] is BlurFilter){//判断是否是模糊滤镜
                        tempArray.splice(i,1);//splice(i,i) i表示要删除元素的开始点,1表示要删除的个数
                        i=i-1;//删除元素后必须将i减1,因为数组长度变小了,现在i位置变为原来的i+1位置的元素
                    }
                }
                myPanel.filters=tempArray;//将新的数据赋给对象,新的滤镜生效
            }
            private function pauseBlur():void{
                if(!blur_effect.isPlaying){ //判断是否处于正在播放状态,如果不是,则暂停失效
                    return;
                }
                if(btnPause.label=="暂停"){
                    btnPause.label="继续";
                    blur_effect.pause();
                }else{
                    btnPause.label="暂停";
                    blur_effect.resume();
                }
            }
            private function endBlur():void{
                if(handlerEnd){//用标示变量,判断是否当前已停止播放,如果没有停止,则反向播放
                    //切换播放方向,实现播放的无缝连接
                    isReverse=!isReverse;  
                    blur_effect.play(null,isReverse);
                    //play()方法的第一个参数表示止标对像,因为先前已指定了目标,所以这里可以省略,用null代替。
                    //第二个参数表示播放方向,如果为true,则逆向播放,为false正向播放
                }
            }
        
]]>
    
</ mx:Script >
    
<!--  Blur对像一般有四个重要的属性,依次是blurXFrom, blurXTo,blurYFrom,blurYTo.这些属性指定了始末位置的模糊距离。    -->
    
<!--  effectEnd="endBlur()"监听了effectEnd事件,是为了实现动画的首尾无缝连接播放   -->
    
< mx:Blur  id ="blur_effect"  effectEnd ="endBlur()"  blurXFrom ="0"  blurXTo ="30"  blurYFrom ="0"  blurYTo ="30"  duration ="1500" ></ mx:Blur >
    
< mx:Glow  id ="glow_effect"  alphaFrom ="1.0"  alphaTo ="0.3"  blurXFrom ="0.0"  blurXTo ="30.0"  blurYFrom ="0.0"  blurYTo ="30.0"  color ="0x6633ff" ></ mx:Glow >
    
<!--    -->
    
< mx:Panel  x ="10"  y ="10"  width ="327"  height ="299"  layout ="absolute"  id ="myPanel"  title ="图片显示面板" >
        
< mx:Image  x ="10"  y ="10"  source ="img/wang.jpg"  width ="111"  height ="163" />
        
< mx:Label  x ="136"  y ="30"  text ="Label" />
        
< mx:Button  x ="10"  y ="209"  label ="开始"  id ="btnPlay"  click ="startBlur()" />
        
< mx:Button  x ="121"  y ="209"  label ="暂停"  id ="btnPause"  click ="pauseBlur()" />
        
< mx:Button  x ="232"  y ="209"  label ="停止"  id ="btnStop"  click ="stopBlur()" />
    
</ mx:Panel >
    
</ mx:Application >
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值