Link to home
Start Free TrialLog in
Avatar of flashdope
flashdope

asked on

movie clip play in reverse with as3

i want to be able to make a movie clip play in reverse when a separate button is clicked.

i have the attached code but it only moves the movie clip back one frame at a time:

can someone tell me how to make the movie clip play all the way back to first frame and stop?

thanks
closeBtn.addEventListener(MouseEvent.MOUSE_UP, closemask);
 
function closemask(event:MouseEvent):void
{
    if (masktest1.currentFrame == 1)
    {
        masktest1.gotoAndStop(masktest1.totalFrames);
    }
    else
    {
        masktest1.prevFrame();
    }
}

Open in new window

Avatar of trypt
trypt
Flag of Taiwan, Province of China image

you should use Event.ENTER_FRAME inside your function called by closeBtn, here's the example:
closeBtn.addEventListener(MouseEvent.MOUSE_UP, closemask);
 
function closemask(e:MouseEvent):void
{
    masktest1.addEventListener(Event.ENTER_FRAME, playMe);
    function playMe(e:Event):void
    {
        if(e.target.currentFrame == 1)
        {
            e.target.gotoAndStop(e.target.totalFrames);
            e.target.removeEventListener(Event.ENTER_FRAME, playMe);
        }
        else
        {
            e.target.prevFrame();
        }
    }
}

Open in new window

Avatar of flashdope
flashdope

ASKER

hey trypt,

thanks for this. it works except it didnt stop when it got back to frame 1 so i changed "e.target.gotoAndStop(e.target.totalFrames);" to "e.target.gotoAndStop(1);" which seems to work.
i have a follow-up question:

my movie clip instance name is now yelltail
inside that movie clip is a button called backBtn1

if i want to target 'backBtn1' from the main timeline instead of inside the movie clip, how would i do that? i tried the attached but it didnt work.


yelltail.backBtn1.addEventListener(MouseEvent.MOUSE_UP, closemask);
 
function closemask(e:MouseEvent):void
{
    yelltail.backBtn1.addEventListener(Event.ENTER_FRAME, playMe);
    function playMe(e:Event):void
    {
        if(e.target.currentFrame == 1)
        {
            e.target.gotoAndStop(1);
            e.target.removeEventListener(Event.ENTER_FRAME, playMe);
        }
        else
        {
            e.target.prevFrame();
        }
    }
} 

Open in new window

what do u mean by target backBtn1 from the main timeline?
backBtn1 is yelltail's child isn't it?
do u mean u want to remove backBtn1 from yelltail's child list and add it to the main timeline?
no i mean i want to put my code on the main timeline rather than on the movie clip's timeline.
ASKER CERTIFIED SOLUTION
Avatar of trypt
trypt
Flag of Taiwan, Province of China image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
sorry trypt but this isnt working. no error messages, the button goes to its rollover state, but it doesnt work.

i'm attaching the rest of the code on the frame in case you can see a conflict. this site wont let me attach the file.

any ideas?
stop();
 
 
 
yelltail.stop();
 
 
var topDepth = 20;
var bottomDepth = 19;
 
ytBtn.addEventListener(MouseEvent.MOUSE_UP, up);
 
function up(event:MouseEvent) {
        var thisIndex = getChildIndex(yelltail);
        setChildIndex(yelltail, topDepth);
}
 
ytBtn.addEventListener(MouseEvent.MOUSE_UP, scalemask);
 
function scalemask(event:MouseEvent) {
	yelltail.play();		
}
 
 
 
yelltail.backBtn1.addEventListener(MouseEvent.MOUSE_UP, closemask);
 
function closemask(e:MouseEvent):void
{
    e.target.parent.addEventListener(Event.ENTER_FRAME, playMe);
    function playMe(e:Event):void
    {
        if(e.target.currentFrame == 1)
        {
            e.target.gotoAndStop(1);
            e.target.removeEventListener(Event.ENTER_FRAME, playMe);
        }
        else
        {
            e.target.prevFrame();
        }
    }
}

Open in new window