Actionscript 3 :: Why Are Event Types Typically Stored Within An Event's Class Definition
Dec 16, 2010
In all the ActionScript examples I come across, people write custom events with the types defined inside the custom event's class definition. But, in my experience, it makes more sense for the object dispatching an event to own its own definition of that event (which, in ActionScript 3, is a String).
[EDIT: After writing this question, I've found there to be cases for both positions -- in some situations, event types should be stored on the event object, and, in others, they should be stored on the object dispatching the event.]
I would like to extends the Event class to add some events I am using in game. But I don't want the new Event Class to have the old public static types. For instance I don't want to have:
NewEventClass.ENTER_FRAME
How do you go about extending the Event class without getting the old types mixed in?
Is there any way to outsmart AS3 to leave out the uneeded types?
Or should I avoid creating a new Event type altogether and just add the new strings?
This might be more of a subjective question, but is it generally best practice to have one dedicated method per event-types that you add an event-listener?
Such as:
myButton.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver); myButton.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); //Somewhere else in the code...
[Code].....
And if you had a MouseEvent.MOUSE_UP, MouseEvent.MOUSE_DOWN and other relevant MouseEvents event-listeners to watch for, you could even set a switch statement to handle all the various MouseEvent types.
I'm trying to rewrite a procedural ActionScript program as an OOP one: in the procedural version I set up event handlers for movieclips on the stage with a loop and it worked fine.However, when I put these event handlers in a class definition, it's no good. Simplified version below, which is just supposed to make a sound when the user clicks on the boxclass definition:
class Event_stuff { var nLpCntr1:Number = 0; var nNumberOfChoiceBoxes:Number = 3;wrong use of terminology
1021: Duplicate function definition function onComplete1(event:Event):void { 1021: Duplicate function definition function stopSound1(event:MouseEvent):void { 1021: Duplicate function definition function backSound1(event:MouseEvent):void {
codes i used:
Code: var thereReq:URLRequest = new URLRequest("SOUNDS/how.mp3"); var there:Sound = new Sound(); var thereControl:SoundChannel = new SoundChannel();
In Flex, is it possible to listen to all event types of an object that's an IEventDispatcher? addEventListener's first parameter is the type, which is a string. In many cases the documentation is not clear what event type it fires. I'd like to attach a generic listener to inspect the events.
I frequently see the usage of ENTER_FRAME and EXIT_FRAME event types in AS3 code. I can even use the first event type just blindly to get certain things done. But I want to clear my concepts on these very fundamental things. My qeries are as below:When do the above 2 event types take place - I mean what triggers them?Does ENTER_FRAME trigger at the rate of FPS? If a MovieClip spans over 48 frames and the FPS = 24 - does this mean the ENTER_FRAME will occur 48 times for the full life-span of the MovieClip?Regarding the EXIT_FRAME, I could not find any example or description yet.
I'm newish to OOP AS... trying to build a image loader that wipes between loads. having trouble getting my onloadComplete event to call a method in the main body of the class. what am I missing?
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 editable grids which are 2-way binded to my model. What I want is to validate my data when user edits any cell before it get updated in model. I have applied my validation at ItemEditEnd handler, but, I want to apply validation in between itemEditBegin and itemEditEnd events.
I hava a custom component and it contains a child icon. If I add a mouse-click event listener to both component(click-listener1) and icon(click-listener2), the event dispatched sequence is click-listener2, then click-listener1. I can understand it. But if I add a custom event to component (listener1), and mouse-click event to icon(listener2), when icon is clicked, the component will dispatch the custom event. In my test, the event dispatched sequence is listener1, then listener2. It doesn't match with event-bubbles rule.
In my opinion The custom event is dispatched in listener2, which triggers listener1. Why event flow sequence is not listener2, listener1?
In component.
icon.addEventListener(MouseEvent.CLICK, iconClickHandler); private function iconClickHandler(event:MouseEvent):void {
I am trying to learn JavaScript and I am wondering whether JavaScript has a event listener just like ActionScript's ENTER_FRAME. Basically, I want this event listener to listen "all the time" not just wait for any particular instance (mouse click, keyboard event) of event.
I've done a class to be able to listen to the event for a CLASS not on an instance.
Code: class net.webbymx.events.XClassEventListener {[code]....
why did I do this.It cames with my rugby game.I have player in two teams. When a player throw the ball I want the other teammate to act like "wait for ball" and the opponent like "seek for ball". Plus I'm lazy (and I don't want to register the listener for each instance of the player I'm creating). So this class is made to be able to handle as many instance of a class I want without adding a listener on each of them. I'm just creating a global listener on the class and then I will be able to receive dispatched event for any instance of this class .so in my team I can do
Is it possible to dispatch event from class that isnt extended class of MovieClip? I created my own class and put import flash.events.Event; import flash.events.*; but when i call dispatchEvent compiler throws error:"1180: Call to a possibly undefined method dispatchEvent."
I have a document class called Main.as In the class constructor I have the following listener:
enter code here var listeningFORModeChangeToStudent:Sprite = new Sprite; listeningFORModeChangeToStudent.addEventListener(TellAllModeChangeToStudent.STUDENT,exp); addChild(listeningFORModeChangeToStudent);
[code]....
In a third class I make a call to the despatcher in the previous class:
enter code here var ThisTellAllModeChangeToStudent:TellAllModeChangeToStudent = new TellAllModeChangeToStudent; ThisTellAllModeChangeToStudent.tellAllModeChangeToStudent();
I have trace statements in eveything and from this I know the despatcher in TellAllModeChangeToStudent is being called.The problem is that the listener in the main.as is not calling the function exp.I cant see why and I dont know how to check if the listener is actually seeing the dispatch event?
I want to dispatch a custom event from the Country() sto the MenuButton();[code]When a country is hovered a custom event is dispatched which I want the MenuButton to listen and if the parameter passed is the same as its name to get highlighted. The Country Class is the Base Class for my countries movieclips I have on stage and the MenuButton the Base Class for the menu button.
In a nutshell I have a custom event that I am dispatching from one class that is not getting picked up by the other class even though i have added the appropriate addEventListener calls on its constructor.Here's how the classes are laid out:
The NetworkManager class extends the MovieClip class as does the LoginScreen and Application classes as well.Now within the oLoginScreen class I dispatch the ValidateCredentialsEvent by calling it this way:
ActionScript Code: dispatchEvent (new ValidateCredentialsEvent(ValidateCredentialsEvent.VALIDATE_CREDENTIALS, oLoginData, true, false));
Then when I debug the code, I can step through and see that the ValidateCredentialsEvent is being generated but it is never picked up by the oNetworkManager class whatsoever.Is this occuring because the NetworkManager and LoginScreen classes are children of the Application class and because of this can't capture events raised by one another without using the Application class as the intermediary to redispatch these events? My whole idea here was to create a generic network managing object that could be called from anywhere within the application, by any object, using custom events.
I am having trouble using a custom event in flex. I need to dispatch an event from inside two nested components and receive it in the main application file. The basic set up is a main application file importing a custom "gallery" component.
If I have a Global Variable Globalvars.vars.noLoaded which is in many classes How do I create an event where i detect to see if it reaches a certain number.
The app I want to build is an interactive map for a site I'm designing. In a nut shell, students looking to enter an exchange program should be able to use the map-image (as in, an actual 'map of the world') to preview possible destinations (I've attached an image of the two basic states to clarify).
After an introductory animation, I want a mouse-over to trigger a function that populates the map-image with a series of buttons. I need the buttons to be distributed according to information in an XML file (ie. x/y coords, some information text, and an animation to load upon being clicked). I want each button to call a mouse-over function that loads info data from an XML field and place it in a dynamic text field at the top. Then, I want each button, when clicked, to call a function that animates replacing the map-image with an image of the corresponding travel destination. Finally, I want a button on each image that will clear that image from the stage and call the function that populates the map so the process can start again.
I'm working out of a couple of books on AS3, but I'm a little hazy on how I ought to be constructing this thing. So here's the first place I've run aground: After the intro animation, I want the user to mouse-over the stage and have a second animation play (clearing away the introductory text), and I want the conclusion of the clearing animation to immediately call the map-populate function; but I don't want a mouse-over to have any effect until the introductory animation is finished. Is there an event dispatched automatically at the end of an animation? What is the event listener class?
I'm not sure if I should be storing each of these animations in an independent .fla file or if I should create them on all one timeline and have the program redirect to specific frames.
I know the difference between the two, but I never felt the need to use the bubbling feature. If I want to listen to an event from a deeply nested children, I always use the capture phase. Could someone explain to me why I should rather use bubbling, its advantages, and maybe show me a situation in which bubbling would be the only solution?
i have a question to ask about asynchronous key controls This was what i did
[Code]...
and i checked with [URL]...?newspage=6249 and it looked more or less the same, so why is it that when i move my character and when i hold down a key, it just keeps on listerning to that keypress event listener, instead of just executing the other event. So say, i tap left and after which i tap right, it will work just fine, but if i hold left and tap right, the event listerner will still be listening to the left key. So, i was wondering could anyone point me in a direction as to how should i make my code stop listening to an event as soon as another event has been dispatched?
if I have an event listerner (mouse, keyboard, enterframe,....event) that is being triggered, and when it finishes its event, something that is able to detect the finished event listener and fire out another sets of event.
It works more like MOTION_FINISH in TweenEvent, but it is only available for TweenEvent only, what if I want to detect a mousclick, keyboard, enterframe or even touch event?
In my AIR application, I try to dispatch a custom event from a class to main window.This class is use to call httpservice. My goal is to send a custom window when the httpservice result is send.[code]...