Solved

Movie Clip with Close button won't stop looping

Posted on 2011-09-25
7
654 Views
Last Modified: 2012-05-12
Hi EE

I have a Flash CS5.5 file with 1 frame in the timeline. In that frame I have a button which when clicked opens a movie clip. The movie clip is a 24-frame animation (it's a motion tween), and has a Close button on the Frame 24. However, when I test the FLA, the movie clip loops and I get the error:

TypeError: Error #1010: A term is undefined and has no properties.
      at scrCustomerMaint_fla::MainTimeline/frame1()

My code is:

modAnimate.visible = false;
btnCustCode.addEventListener(MouseEvent.CLICK, showPopup);
function showPopup(event:MouseEvent):void
{
	modAnimate.visible = true;
}

modAnimate.btnClose.addEventListener(MouseEvent.CLICK, hidePopup);
function hidePopup(event:MouseEvent):void
{
	modAnimate.visible = false;
}

Open in new window


Debug says the problem is on the "modAnimate.btnClose" line. I guess it's because btnClose isn't available at that point, but I don't know how to fix the problem. I've tried adding a stop() function to Frame 24 of the movie clip but that just throws up more errors. Can anyone please help?

Incidentally, if I use a similar movie clip - one that has no motion tween - the above scenario works perfectly, i.e. main timeline button opens the movie clip, and the movie clip's Close button closes the movie clip.

TIA
0
Comment
Question by:cmattar
  • 4
  • 3
7 Comments
 
LVL 18

Expert Comment

by:Antonio Estrada
ID: 36597057
The issue here is that when you load a MovieClip and want to access a property (btnClose in this case), the property must be defined in the first frame so it can be used.

Sooo, the fix is rather simple, btnClose must exist in the first frame (and throughout the timeline). You can extend the frame it appears in so it's from frame 1 to 24 and set it invisible via code (btnClose.visible = false;) on frame 1 and visible again on frame 24 (btnClose.visible = true;).

You could also simply make it a new keyFrame and set its alpha to 0 in the timeline.

I'm not sure if I'm being clear over here, heh. If I'm not I can provide a sample.

Good luck,

-V
0
 

Author Comment

by:cmattar
ID: 36597163
Thanks for responding Vulturous, however either I'm not understanding you or I've not explained the issue correctly.

I've got a button on the main timeline which opens the movieclip - the movieclip is the object that's looping. Using your suggestion, I can now have btnClose appearing thru the whole 24 frames (thanks for that!), so I can click that in the movieclip to stop it - but the rest of the clip loops. Putting a stop() on frame 24 doesn't help as the movieclip then just jumps to the end of its timeline, i.e. no animation.

I'd upload the FLA but EE won't allow it - says that .xlf is not an allowed extension. I'm assuming that the .xlf referred to is the ActionScript part of the FLA...?
0
 
LVL 18

Expert Comment

by:Antonio Estrada
ID: 36597192
Can you try exporting the file to Flash CS4 or Flash CS5? (should be a *.fla, not *.xlf).

And yeah, I must have not explained myself all too well.

-V
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 

Author Comment

by:cmattar
ID: 36597239
No problem - CS4 uploads seem to behave themselves. You'll see I've implemented your suggestion about alpha on the btnClose within the movieclip. Thanks for taking a look.
ButtonTest-CS4.fla
0
 
LVL 18

Accepted Solution

by:
Antonio Estrada earned 500 total points
ID: 36597275
Alright so what happened here... is that I assumed that you were loading the modAnimate MovieClip on runtime, but you already have it in the timeline and just call it.

The fix here is to go ahead and place the stop(); on frame 24 as before (when the animation didn't appear) but also modifying the code a bit to prevent it from animating before.

Code on the main timeline:

 
modAnimate.visible = false;
modAnimate.gotoAndStop(1);
btnOpen.addEventListener(MouseEvent.CLICK, showPopup);
function showPopup(event:MouseEvent):void
{
	modAnimate.visible = true;
	modAnimate.play();
}

modAnimate.btnClose.addEventListener(MouseEvent.CLICK, hidePopup);
function hidePopup(event:MouseEvent):void
{
	modAnimate.visible = false;
	modAnimate.gotoAndStop(1);
}

Open in new window


What made the popup loop or not show animation when clicked on was that it was present on the timeline, so when the swf opened, both timelines started to run (the main timeline, 1 frame, and the modAnimation timeline (24 frames)) so when you clicked on it, that MovieClip was already animating.

Sooo I added a bunch of stops (or gotoAndStop) to ensure that when you click on it, it hasn't played and shows from the first frame. And when you close it, it goes back to the first frame.

Again, I'm not sure if I'm being clear, seems that I'm writing contrived stuff today for no apparent reason haha. If this ain't clear (quite possible) I can upload your corrected fla, clear my mind a bit (get some rest and stuff) and write something better tomorrow :P.

Good luck!

-V
0
 

Author Comment

by:cmattar
ID: 36597292
It worked! Never would've figured this out myself. I can also understand the logic of the solution, so thanks for taking the time to explain that. Thanks heaps :-)
0
 
LVL 18

Expert Comment

by:Antonio Estrada
ID: 36597332
I'm glad I was able to help out :D

-V
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Sometimes you know that one object has a specific child in it, but you can't find the child. This happened to me when I was trying to code some actionScript to make a toolbar work with its embedded buttons.  My partner had created the toolbar usi…
Recently, I was asked to recommend a tracking system to be implemented on a clients website. As the entire site was built on flash, my first thought was to suggest custom built tracking system. However, our company at that point of time didn't h…
In this tutorial viewers will learn how to create a basic motion tween animation in Flash Open a new document in Flash: Draw/import an image: Press CTRL + F8 to convert it into a graphic symbol: Select a frame (how long you want the tween to last): …
The goal of the tutorial is to teach the user how to use the auto adjust feature and what the different options do. When your video is not working right you can choose the auto adjust feature to help choose your settings.

948 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now