<? 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 >