闪回时间轴

Flash reverse timeline

使用 flash cs6 和 as3。

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

我在影片剪辑中制作了蓝色矩形 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);
    }
}

我是不是代码有问题?感谢您的帮助。

尝试使用此代码:

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