网页编程 - FLASH-不倒翁


    原理:将周期性变化的三角函数乘以固定值(最大倾斜角度),所得结果实时赋值为不倒翁的倾斜角度。
    
    1. 首先在舞台上画一不倒翁(你千万别画得比我好看),按f8转换为影片剪辑movieclip,命名为mc。双击进入编辑,将不倒翁拖到注册点之上居中。
    2. 新建图层2,并画一矩形以覆盖不倒翁,按f8转换为按钮button。调整属性使其成透明。
    
    
    
    3. 选择按钮打开动作action窗口,输入以下语句:
    
    on(rollover,dragover){
     ang=math.pi/2;  //90°(п/2)的正弦值为1,因选此为初始角度
     damp=1;         //阻力系数
     hold=true;      //鼠标滑过,mc受力中设为真
     wave=false;     //mc不可摆动
     dir=_x>_root._xmouse?1:-1;
    //mc倾斜动方向,当鼠标从左侧过来(_x>_root._xmouse)时设为1,即mc要向正方向(右)倾斜
    }
    on(rollout,dragout){
     hold=false;        //鼠标滑出,mc不在受力中
     wave=true;         //mc可摆动
     rot=_rotation*dir; //初始角度
    }
    
    4. 回到主场景,选择影片剪辑打开action窗口,加入以下动作:
    
    onclipevent(load){
         maxr=30;    //mc在受力的情况下最大可倾斜角度
         rr=2;       //mc受力中每帧倾斜幅度
         ang=math.pi/2;
    //因ang会在不断运动中改变,所以按钮中的"ang=math.pi/2"亦不可缺少
         damp=1;
    }
    onclipevent(enterframe){
         if(hold){    //如果正在受力
              if(_rotation*dir<maxr) 
                   _rotation+=dir*rr;
              else
                   delete this.onenterframe;  //减少cpu工作量
         }else if(wave){
              if(damp>0.1){
                   _rotation=rot*dir*math.sin(ang)*damp;
                   ang+=0.5;
    //角度增加,其正弦值会从1到-1再到1的运动,与初始倾斜角相乘,mc的倾斜角度亦会呈现规则变化
                   damp*=0.97;  //随着系数的减少,mc每次的极端倾斜度也会亦小,最后趋于0
              }else
                   delete this.onenterframe;  //当阻力系数小于0.1时停止摆动
         }
    }
    
    示例: