ActionScript 2.0 :: Event Listeners - MovieClips Fade In At Different Times
Aug 2, 2007
Flash CS3, actionscript 2.0. I have a timeline animation that I am trying to convert to actionscript. Basically there are 8 movieclips that I have added to the timeline that fade in at different times. I have the code for each of the tweens figured out
(var laugh:Tween = new Tween(laugh_mc, "_alpha", Strong.easeIn, 0, 100, 17, false)
But I need one to start one, then when its finished, go to the next one without using go to and play.
I'm creating a class for a game, and I'm having a problem removing event listeners from movieclips in that class.In the class file I have an enterFrame event which puts the movieclips into motion - I want to remove that event listener when the movieclip is removed from the stage.I made the function 'public' in the class file and tried to target it as follows (animal is the movieclip)animal.removeEventListener(Event.ENTER_FRAME, animal.onEnterFrameHandler)
I have two movie clips. The child movieclip is a button with rollover events which is nested inside the parent. I would like the parent to also have rollover events, but I understand that this is not possible in flash. I am familiar with two workarounds: event bubbling/delegation and the event listeners.
I have a button that is a movie clip that is set up with animations triggered with MOUSE_OVER and MOUSE_OUT event listeners. The glitch is that once the mouse is over the button ... each ensuing pixel that the mouse is moved, loops the animation again. That probably didn't make a whole lot of sense, so I posted the file on my test site [URL]. You have to drag your mouse slowly across the button to see this. The bottom part of the button works as I'd expect. When you roll over the text at the bottom of the button, everything functions as it should. The looping problem starts when you roll over the image portion of the button. For some reason it considers each consecutive pixel rolled over to be a new event and consequently triggers the "over" animation again.
The code I have is below. I've commented out the MOUSE_OUT function for now. There is also a screenshot at the above link of my Layers palette for the button clip in question. I put a "stop" label at each frame that has an action so you see the actions used. oneBedButton_mc.buttonMode = true; oneBedButton_mc.addEventListener(MouseEvent.MOUSE_OVER, overEffect); //oneBedButton_mc.addEventListener(MouseEvent.MOUSE_OUT, outEffect); function overEffect (e:MouseEvent) { oneBedButton_mc.gotoAndPlay("over");} function outEffect (e:MouseEvent) { oneBedButton_mc.gotoAndPlay("out");}
I have done this same thing in ActionScript 3, but am not familiar with ActionScript 2, which I am forced to use for this project. I am loading products into a SWF via XML and attempting to add a click event to each dynamically-created movieclip. Simply tracing the text from a node in XML will do for now. I'd like to assign a property called "desc" or "description" to each movieclip and have it trace that property's value when clicked. Here is the relevant portion of my code as it stands:
I'd like to add event listeners to movieclips (already on the stage), whose names are called from an array one by one, into a for loop.
Code: // there are 4 movielcips on the stage with name a1 - a4. // create array var Bro:Array = ["a1","a2","a3","a4"]; // for loop for ( var i:Number = 0; i < 4; i++) { // Add event listener to array values to buttons. Bro[i].addEventListener(MouseEvent.ROLL_OVER, roll, false, 0, true); //execute this function on rollover function roll() { trace("why wont my arrays work in for loops"); }}
I've created a drop down list and populated it with dynamic buttons. (I made a DropDown_btn class with a dynamic text field in it and then filled the button text from an xml file). On rollover I tint the button blue and then set the tint back to black on rollout. When you click on the button I'd like it to stay blue until a different button is clicked.
...and then I need to addEventListeners back to any button that doesn't have them and set that button back to black. I could do this by looping through an array of the buttons but I can't figure out how to access them as objects.
I also gave them each a property of "buttonValue" when I loaded them so I can access event.currentTarget.buttonValue (which in this case is a number from 1-5) but once again I can't figure out how I might leverage this information.
I have a loop which creates a bunch of movieclips and sets them on the stage.As I create each one I attatch an eventListener to it.My problem is that when the eventListener fires, the function it calls always works on the first mc added to the stage, not the one that fired the listener.How do I fix this?Here's a bit of the code:
but only 1 ball restart back,other 14 ball just stop at there , try paste on action and try you will see what i mean , how i going to make all ball restart back?
The problem is I get Error: Error #2094: Event dispatch recursion overflow. Why does removechild keep getting called if this.parent does not exist? Why doesn't removing event listeners work?
Can event listeners only be added to the class which dispatched the event? I ask because I want to have the logic for the listener on the main class, and the action is dispatched on click from a thumb which is instantiated in a scroller class. Kinda like this:
ActionScript Code: pseudo code: class main { main() {
[code]....
This doesn't work. Why can't the main class listen for an event on the thumb class?
I have three movie clips, mc_1 should delete mc_2 and and mc_3 should delete mc_1. I can get mc_1 to delete mc_2 but I can't get mc_3 to delete mc_1. I am getting a trace in the output window confirming both. How do I go about doing it?
I've created a code to add a custom cursor and drag movieclips. It works fine for one moviclip. But I would like to create a function to add the drag function with custom cursor to any movieClip that i add to an array. My first try has problems cause I need to create a different listener name to each movieClip. cMouse = CustomMouse; mystring:FunctionParameters = movieClipsNames; mouseListener => Needs to duplicate (i guess);
Code: function arrastar (mystring) { arrasta = false; cMouse._x = _xmouse; cMouse._y = _ymouse; clips_array = new Array(); [Code] ..... I've attached my original working code to 1 movieclip with a customCursor onRollOver
I have an mp3 playing. What I would like is to have a movieclip that is located in the library appear, complete it's animation then get removed. The movie clip must complete this proccess 4 times, randomly during the length of the song but never at the same time and not in the last 5 seconds of the song. BTW I can't do this manually by just firing it off a random amount of times because this code will be used with lots of different mp3's, so I need to use the dynamic data I get by retrieving the song length. I have the code working to retrieve the length of the song, and I have a variable that stores the length minus 5 seconds from the end, so I basically have the length of time I wish to work with.
My problem is making the movie clips appear 4 times randomly throughout that length of time. The code is below (what I have so far), the movieclip is stored in the library as circle_mc. The timer I'm using at the beginning of the code (to retrieve the length of the song) is set to run after 2 seconds this is because there is a delay in the music starting and if it did it instantly the number retrieved obviously would be 0, so I delay it by 2 secs till I know the song is playing. At the moment I'm just trying to get it to fire twice, at the moment it fires once or not at all.
I have a question about movie clips. I have about 20 MC-s in my flash. Is it possible for me to duplicate one of them multiple times in specific location? I mean if I have button that says "DOG" and I press it, then new dog appears on screen. And I need to do it for like ten times or so
If I have 5 frames and each contanins a MovieClip on stage that includes it's class, listeners, functions etc.If I go from one frame to another,should I clean everything up? I mean remove listeners, remove childs etc etc.Or other MovieClips except those in the current frame are ignored from flash player.
So I've gotten into using my own as Classes, and have an interesting question. My main swf calls a php script that gets data from a mysql database which is returned as XML. Part of that data that is retrieved is a filepath to a jpg image. It then takes that filepath and other information, and passes it to my external class, the "news story" class.
All fine and good. Then, the "news story" class uses a loader to load that image along with some text, organize it, and voila, you've got your own very pretty "news story". (I'm extending the MovieClip class here, though I suppose it doesnt matter)
Now, my main swf uses this component to load multiple of these "news stories". The problem is, theres that load time for the image. The main swf is loading them all one at a time, because they are putting each one together on their own.
The key here is that it be dynamic. So, since we don't know how much text is in each "news story", we also therefore don't know it's height. What I'm doing is creating each story in the main swf, pushing it into a "news story" array, adding an event listener to each ones' loader, and when the event listener is triggered, I want it to go to the 'add content' function where it sets the news story's Y value based off the position and height of the previous story that was added (stacking them, obviously). This makes sense, because otherwise it'd add them all on top of each other and it'd be a jumbled mess.
The problem is, the event listener is on the loader object INSIDE the component actionscript. So, how do I figure out which news story to set the Y value for? Because the eventlistener is listening to the loader, not the class. I hope this makes sense AT ALL. Here is the code:
Quote:
while (fancy shmantzy conditions) { /*creates the news story and passes xml data to it (filepath, etc)*/ storyBlock = new StoryBlock(a bunch of parameters); subCBArray.push(storyBlock); //array that stores each news story info
I have made an event listener:text0_mc.addEventListener(MouseEvent.CLICK, showMe);showMe is a function, but I need it to call more than 1 function at once i.e. -ext0_mc.addEventListener(MouseEvent.CLICK, showMe1, showMe2, showMe3, showMe4, showMe5, showMe6, showMe7);Each function contains an if statment as below.
function showMe1(event:MouseEvent):void { if (shuffledArray[1]==orderArray[1]){
Lately I've been twitching in the back of my head wondering just how many references to objects that I'm making, and whether or not they are getting GC'd or not.My question in this sense refers to event listeners and whether or not they are removed in certain cases where you get rid of an object. Two examples:
First, and I think this one is an easy one... when you create an object that adds an event listener to itself INSIDE it's own methods (e.g. this.addEventListener(e:Event, function)), when you REMOVE that object (this), do it's event listeners disappear too? I can only say yes, because they are referencing THAT object and are INSIDE that object.
So I think that question answers itself (but I'd love to know if the truth says otherwise).
But secondly, if you add an event listener to an object from a sibling or parent object, and then remove the object, does that event listener stick around, therefore maintaining a reference to that object and keeping it in memory? And is that the concept that people keep referring to of 'weak' event listeners? E.g. someChildObject.addEventListener(e:Event, function)Also, are event listeners by default strong or weak?
And I am assuming that 'yes', it DOES keep the reference. Which, if you are a n00b programmer like me, you probably are all like, 'aww sh*t damn, how am I supposed to make sure that my objects are getting thrown in the garbage collector's mouth of goodness every once in a while?
I found this code for a contact form at[url]...and it dynamically creates input fields and buttons. I didn't like the dynamically drawn submit and reset buttons, so I added my own MCs(my 'buttons') to the stage.I tried modifying the code and took out the dynamically drawn buttons..However, I cant figure out how to add Event Listeners to the buttons which exist on the stage--Im getting undefined errors...[code]...
I have a movielcip (A) class in which I have used a Tween class effect on a child movieclip (B) scrollRect. The (B) Movieclip in turn has several movieclips whose have tween class effect being executed on thier child movieclips.the tweens are all unique to each movieclip and the event listeners are taken off once completed.This works all well and good in FLASH IDE..My problem arises when I try to view this in a browser on a Windows XP.[code]
What is happening in most cases it that the animation appears to "stick" but i think what may be happening is the listening or removal of the event listeners. The animations are left incompleted.Is there any rule of thumb when using multiple event listeners?[code]the effect disables and re-enables the buttons when its done.... then the listeners are removed.each one with the exception cretes its own unique tween (obviously this is a custom class built as each clip)
I have an array that returns multidimensional data from an mysql database, when this is collected the createNews function creates the user interface. The problem I am having is the loop is iterating quicker than the UI is being created, is there a way to use event listeners with loops so it only continues after my function has completed its work?
In my Flash project I have a movieclip that has 2 keyframes. Both frames contain 1 movieclip each.
frame 1 - Landing frame 2 - Game
The flow of the application is simple:
User arrives on landing page (frame 1) User clicks "start game" button User is brought to the game page (frame 2) When the game is over, the user can press a "play again" button which brings them back to step 1
Both Landing and Game movieclips are linked to separate classes that define event listeners. The problem is that when I end up back at step 1 after playing the game, the Game event listeners fire twice for their respective event. And if I go through the process a third time, the event listeners fire three times for every event. This keeps happening, so if I loop through the application flow 7 times, the event listeners fire seven times. I don't understand why this is happening because on frame 1, the Game movieclip (and I would assume its related class instance) does not exist - but I'm clearly missing something here.
I've run into this problem in other projects too, and tried fixing it by first checking if the event listeners existed and only defining them if they didn't, but I ended up with unexpected results that didn't really solve the problem.
How do you know when you should remove event listeners? For example, I know that if I have a TimerEvent listener, I can safely remove that event when I have stopped and / or deleted my timer. Or, if I have a display object on the stage, and I remove it, I can safely remove any event listeners associated with the display object.