Flash 特效原理 震动效果

               

今天无聊中在百度看到一种效果叫震动效果。它可以应用在按钮上,也可以在窗口上。就好像QQ那样震动。于是根据他们的想法,随手写了一个简单实现效果。

基本的办法,就是想办法改变他们X和Y坐标,让其进行变化。

初步思路:

在时间器下

contain.x=startX+随机数;

contain.y=startY+随机数;

在时间的变化下,产生时间动画。contain.x 和contain.y 就会产生变化过程。

贴上一张演示图,我们在舞台上,创建一些的按钮和元件。当鼠标经过表面的时候,开始动画,离开的时候结束动画并返回位置

下面封装一个类

//震动效果package org.summerTree.effect{ import flash.display.*; import flash.utils.Timer; import flash.utils.Dictionary; import flash.events.*; public class ShakeEffect {  private var timer:Timer;  private var deley:Number;  private var startX:Number;  private var startY:Number;  private var para:Number;//震动的参数  private var m_contain:Dictionary;  private var currentID:String;  public function ShakeEffect(deley:Number=100,para:Number=5)  {   m_contain=new Dictionary(true);   this.deley=deley;   this.para=para;   timer=new Timer(deley);   timer.addEventListener(TimerEvent.TIMER,onTimer);  }  /* 添加列表   *   *    */    public function addList(id:String,obj:*):void  {   m_contain[id]=obj;  }  private function onTimer(event:TimerEvent):void  {   moveBy();  }  public function start(id:String):void  {   startX=getObject(id).x;   startY=getObject(id).y;   currentID=id;   timer.start();  }  private function getObject(id:String):*  {   return m_contain[id];  }  public function stop():void  {   timer.stop();   getObject(currentID).x=startX;   getObject(currentID).y=startY;  }  public function destory():void  {   timer.removeEventListener(TimerEvent.TIMER,onTimer);  }  public function reStart():void  {   timer=new Timer(deley);   timer.addEventListener(TimerEvent.TIMER,onTimer);  }  //  private function moveBy():void  {   getObject(currentID).x=startX+Math.random()*para;   getObject(currentID).y=startY+Math.random()*para;  } }}

演示:

在舞台上,添加一些影片剪辑。改名为mc1----mc6。在使用的时候,我们添加他们名称和元件名称。

创建一个ShakeEffect类,然后写上一个时间延时。将需要添加震动效果的按钮加上去。

addList(id,对象)

(注意 Timer 执行的快慢取决于帧速或flash环境等因数,每次调用的时候会有偏差。)

 效果很容易出来了。

下载demo

import org.summerTree.effect.ShakeEffect;var shake:ShakeEffect=new ShakeEffect(60);shake.addList(mc1.name,mc1);shake.addList(mc2.name,mc2);shake.addList(mc3.name,mc3);shake.addList(mc4.name,mc4);shake.addList(mc5.name,mc5);shake.addList(mc6.name,mc6);mc1.addEventListener(MouseEvent.MOUSE_OVER,onOver);mc2.addEventListener(MouseEvent.MOUSE_OVER,onOver);mc3.addEventListener(MouseEvent.MOUSE_OVER,onOver);mc4.addEventListener(MouseEvent.MOUSE_OVER,onOver);mc5.addEventListener(MouseEvent.MOUSE_OVER,onOver);mc6.addEventListener(MouseEvent.MOUSE_OVER,onOver);function onOver(event:MouseEvent):void{ shake.start(event.currentTarget.name);}mc1.addEventListener(MouseEvent.MOUSE_OUT,onOut);mc2.addEventListener(MouseEvent.MOUSE_OUT,onOut);mc3.addEventListener(MouseEvent.MOUSE_OUT,onOut);mc4.addEventListener(MouseEvent.MOUSE_OUT,onOut);mc5.addEventListener(MouseEvent.MOUSE_OUT,onOut);mc6.addEventListener(MouseEvent.MOUSE_OUT,onOut);function onOut(event:MouseEvent):void{ shake.stop();}

累了,明天继续修改,加油!

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

猜你喜欢

转载自blog.csdn.net/truhfcg/article/details/86607962