菜单制作的动画部分:
首先新建一个元件 如图所示:然后新建一个mc_og,在其中设置三个图层
在每个图层中创建如下空白关键帧
并放入先前新建的元件 设置如图所示,在每一层的第一个关键帧中元件的alpha属性为0
并且其他层的第一个关键帧的元件的位置都相对下一层元件的位置如图
第二个关键帧 的元件位置都紧贴下一层元件并且 第二个关键帧的元件要比第一个略大 以凸显变大效果 如图
每个第二个关键帧的元件 命名为 btn_main btn_1 btn_2.....
然后每一层都创立传统补间动画 最后每一层都补充延长帧 使最后构图完整
给每个关键帧的元件中都设置 如图 先变大后变小 例如 1-5帧变大 6-10变小
第5 10 帧设置stop();
代码部分:
在每一层都空出一个空白关键帧(除了主菜单)
在代码层,第一帧设置 stop(); 对应第二关键帧的位置
都设置
//鼠标移动到子菜单 子菜单呈现变大效果 鼠标移开呈现缩小还原效果
btn_1.addEventListener(MouseEvent.MOUSE_OVER,btn_1_over)
function btn_1_over(event:MouseEvent)
{
btn_1.gotoAndPlay(1);
}
btn_1.addEventListener(MouseEvent.MOUSE_OUT,btn_1_out)
function btn_1_out(event:MouseEvent)
{
btn_1.gotoAndPlay(6);
}
最后把mc_og 添加到舞台上 在舞台新建一个代码层
mc.buttonMode = true; //鼠标移动至元件 变为手型
mc.addEventListener(MouseEvent.ROLL_OVER,onmove);
function onmove(event:MouseEvent)
{
mc.gotoAndPlay(2); //鼠标移动到mc_og上播放mc_og 以呈现菜单向下逐渐显示
mc.removeEventListener(MouseEvent.ROLL_OVER,onmove); 并移除鼠标经过侦听
}
mc.addEventListener(MouseEvent.ROLL_OUT,mc_roll)
function mc_roll(event:MouseEvent)
{
var i:int = 20;
mc.addEventListener(Event.ENTER_FRAME,mc_frame) //鼠标移开后 给mc_og添加循环侦听 让其倒着播放
function mc_frame(event:Event) 呈现菜单向上 逐渐收缩效果
{
mc.gotoAndStop(i);
i--;
if (i==0)
{
mc.removeEventListener(Event.ENTER_FRAME,mc_frame); //当mc_og到回放到第一帧时移除循环侦听
mc.addEventListener(MouseEvent.ROLL_OVER,onmove); 添加回鼠标经过侦听
}
}
}
最后效果如图 :