原理:将周期性变化的三角函数乘以固定值(最大倾斜角度),所得结果实时赋值为不倒翁的倾斜角度。
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时停止摆动
}
}
示例:
网页编程 - FLASH-不倒翁