AS3 :: Flash - Define Own Event Listeners?
Nov 9, 2010How do I define my own event listeners in AS3?
View 3 RepliesHow do I define my own event listeners in AS3?
View 3 RepliesIn 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.
I have a basic question about manually removing event listeners in actionscript 3.If I have a function like:
private function doStuff(event : Event):void
{
//let them save
var f:FileReference = new FileReference();
[code]...
How do I remove the event listeners when the saveDone function is called? Normally I just change the "add" to "remove" like:
f.removeEventListener(Event.COMPLETE,saveDone);
However, f is a local variable, and I can't get to it after the doStuff function ends.
private function saveDone(ev:Event){
f.removeEventListener(Event.COMPLETE,saveDone);
}
I've done most of my code in as3, working from either document class or classes. I've never done action script from within the actions panel (within Flash cs4). My question is do I need to follow the as2 manual in order for majority of code to work ? for example. If I want to do a loop. I can't do a
addEventListener(Event.EnterFrame,loop);
I have to do
varible = onEnterFrame()
[code].....
I have this problem with mouse events simply I added two listeners on a movieClip that simply contains two keyframes 1 and 2 the code is in external class file of the movieClip
[Code]...
but when it goes to frame 2 it does not answer the moseUp event and stucks in frame 2
i made a SWF which contains a loader which loads any SWF file passed to it... the problem I'm encountering is that for some SWFs, some event listeners doesn't fire anymore... my own SWF file (which contains the loader) doesn't really have any other element except for the Loader object and so I cannot understand what seems to be preventing the loaded SWF (loaded by my Loader) from receiving some mouse events
it seems that the for the SWF where I'm having this problem, the listener seems to be tied up to a location in the stage or somewhere else, and so whenever I resize, the listeners is not responding on the right place, for example, the button appears on a certain position but the listener's hit test or whatever the SWF is using to detect the mouse click is positioned somewhere else
looks like flash has few issues when using transparent mode on different browsers players. Adding and removing eventlisteners on buttons are acting different. In some players everything works OK. FF and Chrome, but in IE, one of my buttons triggers the function even after removing its listener. Is this known issue, and is there any global set I can use to prevent this?
View 1 RepliesI'm trying to make a flash version of those refrigerator magnet poetry kits. As such I have about 150-180 little MCs each with a different word. They are all named sequentially, so theoretically I could just make some array counter or something to stick the handlers on right?
View 5 RepliesI have this in my constructor:
[Code]..
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 a parent SWF (Parent) that handles user navigation between multiple children SWFs (Child_1, Child_2, Child_3). How do I add event listeners to the navigation buttons on the children SWFs so that the user can move laterally between Child_1, Child_2 and Child_3? I can think of two options but can't get either one to work:
1) The parent SWF sets up the event listeners when it loads a child. So, I use a loader on Parent to load Child_1 and in Parent add eventlisteners to Child_1.myNavigationform.myButton.
The problem here is that the Parent is only handing the loader instance and I can't think of how it would drill down to the individual objects within Child_1.
2) Child_1 adds the event listeners to its own objects. This just reverses the problem. Child_1 has no problem accessing its own buttons but when a user clicks them it has no way of accessing methods on parent so that Child_2 can be loaded.
I am creating a site with lots of big scrollable text-boxes in it. Each text-box object contained some text, and two buttons to scroll up/down with. The scroll buttons each had an event listener so the text moved when you clicked them.
These text-boxes were stacked on-top of each other with all except one having an alpha of 0. If I wanted to change which text-box is active I move it to the front and call a small TweenLite animation.
To the left (outside of the text-box objects) I have an object similar to a menu. It also has about 12 or so event-listeners (one for every button).
This turns out cause A LOT of lag an it's very troublesome for my laptop to run it. reduce the number of event-listeners on the stage and also the amount of text-boxes.
What I was thinking was to add the text-boxes using AS so I only have 1 on the stage at a time but I couldn't figure out how to do it. I also thought it might be better to just use 1 big event-listeners and from mouseX and mouseY decide which button the user is trying to push.
Do anyone know how to see the event listeners of any component in the debug mode of the Flex or Flash builder?
View 3 RepliesI have some MovieClip class that has eventListener, added from inside the constructor of the class (it's MouseEvent.MOUSE_DOWN). Now, I want to add the same listener externally, from parent class, for other purposes. Will these two interfere with each other or it's okay?
View 2 RepliesI want to make a little game. What I need is to add event listeners to all of Tank objects inside the Battlefield instance. I just can seem to figure out how.
View 1 RepliesI am trying to load some of my Flash Movies abit faster. I had read somewhere that i should use certain commands to bring the sounds out of the library after the SWF or page is loaded. I think i am suppsed to use Event listeners or call on the sounds somehow?? Does anyone understand what i am saying OR have any tutorials or links to tutorials that i can look at with regards to calling sounds?
View 1 RepliesThis is my first real programming endeavor and this is the last thing holding my little project back from being a success.
My goal with this code is to add event listeners to an array of Movie Clips that will drag and drop them on the stage.
Here is the code:
var itemBank:Array = new Array(d1_anim.drawer1.test01.movieClip_1, d1_anim.drawer1.test01.movieClip_2);
for(var i:int = 0; i < itemBank.length; i++) {
[Code].....
An odd thing is happening for me, my eventlisteners only fire off once then they seem to stop working.
This thing is a movieclip that slides up the parent movieclip and another movieclip within mc slides it down. They only work once.
ActionScript Code:
slider.up.addEventListener(MouseEvent.MOUSE_UP, activateSlider);
slider.down.addEventListener(MouseEvent.MOUSE_DOWN, activateSlider2);
var frameBoolean:Boolean = false;
[Code].....
can i define a flash event as double click or single click
View 3 RepliesI have a movieclip that contains two frames, each frame contains a different set of buttons.
it seems that i cannot add the event listeners to buttons that are not in my current viewed frame.
so.. problem one: is there a way to add event listeners to all the elements in the movieclip even if the elements are in a different frame.
problem two: after I added an event listener to some elements in current frame and then I move forward to the next frame and go back to the same frame, all the event listeners are removed and i need to initialize them again. is there a way to resolve the issue without the need to re-initialize the event listeners ?
I have an action listener :myText.addEventListener(TextEvent.LINK,linkClickHandler); As according to this, i need to write an event handler function seperate to handle the text link event.Now my requirement is i need to write that function in the same line isntead of giving its name.ie, something like mytext.addEventListenet(TextEvent.LINK, function(event: TextEvent) {....code comes here....});
can i do like this in AS3.What will the syntax for this if possible.Also i want to know, wether i can pass one more extra param to the event handler other than event which is the default parameter.
I am developing a multiple choice question answer. I have a movie clip in frame 2 where the radio buttons and question choices are displayed.I am trying to define a event for the radio button in the movie clip's first frame. But i show questions in random order. Say for example the first question to show is fifth I move the movieclip to 5th frame. The event is not firing since it is declared in the first frame.Should i place the button event code in each and every single frame or is there anyother option for this.
View 0 RepliesSo 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
[Code]....
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]){
[code].....
In AS2 you could add an onRelease to multiple buttons like this:
Code:
onebutton.onRelease = anotherbutton.onRelease = lastbutton.onRelease = function() {
//do something when either button is pressed;
}
Is there something similar possible in AS3 using addeventlistener? Besided copying the same addeventlistner line for all individual buttons?
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]...
View 2 RepliesI 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)
If you have multiple event listeners running, is there any way to remove all of them at once rather than one at a time?
View 3 RepliesI 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?
[Code]...