Search code examples
actionscript-3flash-cs6

Flash reverse timeline


Worked with flash cs6 and as3.

I wanted to make menu like this link. When mouse_over on the menu, the blue rectangle moves to the right; and when mouse_up, the animation reversed.

I made the blue rectangle in a movieclip menuBlueHome. There, I made the rectangle moves from left to right (from frame 1 to 10). At frame 10, I made action script:

stop();

I was still working with home menu when I faced this problem. When I hover the home menu, the blue rectangle moves to the right and reversed straightaway before mouse_up. Here is the code outside the 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);
    }
}

Did I make something wrong with the code? Thanks for your help.


Solution

  • Try with this code:

    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 you have and example.

    But, I recommend you to do your code more dynamic, here you have another example.