Flash反向时间线

时间:2015-12-16 14:17:14

标签: actionscript-3 flash-cs6

使用flash cs6和as3。

我想制作像这样的link菜单。当菜单上的mouse_over时,蓝色矩形向右移动;当mouse_up时,动画反转。

我在movieclip menuBlueHome中制作了蓝色矩形。在那里,我让矩形从左向右移动(从第1帧到第10帧)。在第10帧,我制作了动作脚本:

stop();

当我遇到这个问题时,我仍在使用主菜单。当我将鼠标悬停在主菜单上时,蓝色矩形向右移动并在mouse_up之前立即反转。这是mc之外的代码:

var menuBlueHome: MovieClip;
menuBlueHome.stop();
var direct: String;

btnHome.addEventListener(MouseEvent.MOUSE_OVER,onOverHome);
btnHome.addEventListener(MouseEvent.MOUSE_OUT,onLeaveHome);
btnHome.addEventListener(MouseEvent.CLICK,onClickHome);

function onOverHome(e:MouseEvent):void{
    androidHome.visible = true;
    menuBlueHome.play();
}
function onLeaveHome(e:MouseEvent):void{
    androidHome.visible = false;
    addEventListener(Event.ENTER_FRAME,onFrameHome);
}
function onClickHome(e:MouseEvent):void{
    gotoAndStop(1);
}

function onFrameHome(event:Event):void {
    if(menuBlueHome.currentFrame > 9) {
        direct = "backward";
    }
    var backAmount:Number = menuBlueHome.currentFrame -1;
    if(direct == "backward") {
        menuBlueHome.gotoAndStop(backAmount);
    }
}

我的代码出了什么问题吗?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

尝试使用此代码:

function onLeaveHome(e:MouseEvent):void{

    androidHome.visible = false;

    menuBlueHome.removeEventListener(Event.ENTER_FRAME, onFrameHome);

    menuBlueHome.addEventListener(Event.ENTER_FRAME, onFrameHome);

}

function onFrameHome(event:Event):void {

    var backAmount:Number = menuBlueHome.currentFrame - 1;

    menuBlueHome.gotoAndStop(backAmount);

    if(backAmount == 1) menuBlueHome.removeEventListener(Event.ENTER_FRAME, onFrameHome);

}

Here你有例子。

但是,我建议您使代码更具动态性,这里有another example