ActionScript 3.0 :: Custom EventDispatcher Between Fla And As
Nov 6, 2010
How to dispatch events from a class (.as) to a document (.fla) ? In my example there's no compiling error but nothing displayed by trace(). What's wrong and how to do to make it works? example.fla
I have a sprite A which has a child, sprite B.Sprite B has a variable, instance of class C which only extends EventDispatcherIn class C, I dispatch a custom Event. The eventlistener in sprite B reacts on the event.The same eventlistener in class A doesn't respond.If I dispatch the same custom event in the eventhandler in class / sprite B, this event is seen in class / sprite A.Is there a difference in events going through the displaylist and those who are from an EventDispatcher?
I dispatch a custom event from an event dispatcher (following solution Inherited a class from EventDispatcher in Flash but custom event not received) and I add a listener in both dispatcher itself and in main. trace shows that only dispatcher receives this event not main. How to make main also receive the event?[code]
I am currently reading the Actionscript 3 Bible and the author shows an example in which a custom eventDispatcher class is created. When the class is later used in the code it's called as such:
//Thermometer is a custom eventDispatcher that extends the eventDispatcher class. var thermometer:Thermometer = Thermometer(event.target); //why no new keyword?
I'm a new programmer and I was curious if someone could explain how this works? Why is the new keyword omitted? When you omit the new keyword on a class that extends another class is it essentially just calling the superclass(eventDispatcher) constructor?
EDIT: For whatever reason, it works in the browser but not when compiled/debugged within the IDE.I can't get my external SWFs to pick up on dispatches from my singleton event manager (EventDispatcher). Here are the particulars:
I add children from an external SWF using the getDefinition method to my main SWF.I'm using a singleton EventDispatcher that is in charge of listeners and dispatching.Using a custom event class.In this code, I am trying to get a mute button to tell the main SWF that the mute icon has been clicked (SoundClipEvent.MUTE_CLICK). After the sound has been muted, it should dispatch the event (SoundClipEvent.STATE) and confirm to the muteIcon the state. Currently, the mute icon successfully dispatches the MUTE_CLICK event and the main SWF document class is able to pick it up. MuteIcon (child SWF MC) hears nothing from the singleton.
SoundClipManager.as:
import flash.events.Event; import flash.events.EventDispatcher; public dynamic class SoundClipManager extends EventDispatcher {
I have a custom event that is dispatched when a slider is moved but I receive no event from inherited dispatcher class I created whereas I followed the same syntax as solution for My flash custom event doesn't trigger
I am trying to work with the EventDispatcher class to dispatch a custom event to stop a video from playing. The video plays inside a MovieClip with an attached class file called PlayerProfile. I want the video in the PlayerProfile MovieClip to stop playing when the user clicks on another MovieClip called ScrollBox. I'm getting no compile or runtime erros, but the code is not stopping the video. I have seen use of a public static constant to represent the custom event. Is that what I am missing here.
My problem is that I have no idea as to how to code it. I know I will use two classes and my two .fla files (unless I am wrong).I have two .fla files that are in play here: the Menu.fla file and the Arena.fla file. Menu.fla contains the entire navigation of the game, options, character selection screens, etc. and when it is time for the player to engage in battle, it loads the Arena.fla file, which contains only the backgrounds (depending on the selected stage) and for now is set to a length of one frame only. For Arena.fla, the real action happens in my classes, but logically, I would only need HP.as and Character.as.
In Character.as, I have declared the following variable:
var isDead:Boolean = false; //is character dead?
In HP.as, believe I should have the following:
if(currentHp<0) { currentHp = 0; character.isDead = true; //declared as var `character:Object;` EventDispatcher.dispatchEventListener("playerDead", playerDead); }
And finally, in Arena.fla, I want to be able to detect the above-mentioned eventlistener and simply move on to a second frame which will display a message in the style of "PLAYER ONE HAS WON" or "PLAYER ONE HAS LOST" with a button that will allow me to go back to the character selection screen. This is the first part in which I am stuck: how do I detect the dispatched event listener in my main .fla file?
Secondly, if the player clicks on the "CONTINUE" button, which displays regardless if the player has won or lost, how can my Menu.fla (which loads the Arena.swf) detect this click event, unload the game, and go back to the character selection screen?
I have several classes with some eventListeners in my project that interfer with each other. I.e. i have a mouseclick event that is not triggered, when i have another class with init events running at the same time. when i remove that other class, the mouseclick event is triggered correctly.
now i am not 100% sure, but i think the solution to this has something to do with EventDispatcher.can anybody please tell me if that is correct and how i can add EventDispatcher to my code without recoding everything?
For some while I am researching on dispatching Events on AS2 which can bubble as it happens in AS3. This is not the first time in this world and I hope you all know how to do it in AS2. My issue is not on addEventListener but the removeEventListener which is not removing that particular event from that object.Cause the handler argument in the mx.events.EventDispatcher is throwing undefined where that should be [type Function]. At the time of registering on addEventListener it is registering the handler as [type Function], but it throw undefined on removeEventListener method.
I am trying to dispatch an event from one class to be received by another another class.The second class has a function that shoud trigger when the event is caught.When I compile I get this error:1067: Implicit coercion of a value of type flash.events:MouseEvent to an unrelated type String.
Here is the class that dispatches the event: package{ import flash.display.MovieClip; import flash.events.MouseEvent; import flash.events.Event; import
I'm working on a an interactive map of the Lewis and Clark Expeditons' experiences along the Missouri River in Montana and I'm running into some difficulty using the EventDispatcher class.
I have a couple of classes that I am working through this issue with. Relevant code is bolded.The first is a Main class that I am using as my Document Class:
I was wondering when you guys extends EventDispatcher in your class. It seems to me that as long as we have import event package, we can dispatchEvent without problems....I saw sometime people extends EventDispatcher in their clas
I have a question regarding the capabilities of the EventDispatcher. Is it possible for flash to dispatch an even and be able to push out information like an int or string?
These days I'm learning the different usages of EventDispatcher class and understanding it's working.
[code]...
Considering the above code if for example I want to broadcast the event of onLoad of xml to different listeners objects with the scope of movieClip in which the xml object is declared, so that later mcs from the library can be attached dynamically.However this approach does not seem to work.
Theory question, more than anything. Code: var page = _root["pageinstance"+num]; //num is a variable, page_li:Object = new Object(); // page_listener object page_li.onPageLoad = function() { trace("hey, look, the page loaded"); page.display(); [Code] .....
The code is much more complex than this, but thats the skeleton of it. Anyone, my question to you is that I need to use this over and over again, for each time the user presses a button. My problem is that Flash seems to have trouble when I try visiting a page I've already been to, because the events don't properly execute. I've tried page.removeEventListener(); and delete page_li; but both seem to be ineffective. Basically, how can I whip the slate completely clean, so that the next time when Flash goes over this code, it executes properly?
How to write as2.0 using class to respond a simple event handler for several mc's?[code]does anyone have some good examples of using eventDispatcher method in a class?
I would like to know if there is a way to watch / listen to variables or object properties using the eventDispatcher class ? I checked tutorials about this class and I understand basics but I really don't see how to do this..
I know the existence of the watch() function, but I heard its possible to use eventDispatcher instead...
i have a class called "RandomErrorClass" that extends Error:
Code: public class RandomErrorClass extends Error { public function RandomErrorClass() { super("random error...");[code]....
my understanding is that the second class, the one that throws the error, will have to extend the EventDispatcher class. is that right? but it already has to extend the MovieClip class. my questions: Does the movieClip class already inherit from the EventDispatcher class? if so, i won't have to implement the IEventDispatcher interface, will I?
I'll try to explain my problem as simple as possible So, I have class A (main class) and class B, and I need these to communicate with each other.
[Code]...
This gives me the error: Access of undefined property RNDMCOLOR... but, I made it public, so it should be accessible by other classes right? Apparently, no I have also tried to type the string "rndmColor" directly into the eventDispatcher and listener, and that gets rid of the error, but the chooseColor function is never called. So what the heck am I doing wrong? How do I make variables accessible from other classes if public doesn't do it?
On a recent discussion I had a problem accessing a function on my main timeline from an external SWF. Muzak gave me the answer using eventDispatcher from que external SWF. Ok everything works fine. But when I test my website on my localhost embedding my SWF using swfobject it stops working.
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'm reading Jesse Marangon's EventDispatcher tutorial. Most of it makes sense. However, when I copy the code into Flash I get a return of objEvent. count = undefined.It looks like the external class Interval is being properly found/used as the rest of the function works.
Is there any way to list all listeners to an EventDispatcher instance, or at least list all event strings that are being listened for?
I know there is a "hasEventListener()" function, but you need to know the string you pass in in order to check for it. I suppose it would be bad coding ethic, but it can have its uses. (Am I making myself clear enough on what I am looking for?)
Also, how are eventListeners speedwise? Since there is a lot that needs to be accomplished when dispatching and listening for events, would it be a bad idea to use an Event system for such potentially CPU heavy items as collision detecting?
What I want to do is to dispatch the click event when the component is clicked. (The class is essentially some text in a textfield that needs to be able to do certain things, and it needs to be able to respond to a click). Sounds easy enough... I want the event dispatched when that portion of the text is clicked. But uh...how? it's not like a button where I can just go myButton.addEventListener(MouseEvent.CLICK, myClickHandler);That's clear, because some component is going to be listening for the Click event dispatched when myButton is clicked. It is built into the AS3 framework that a button knows how to listen for a click event.
After the import statements I've got:[Event(name="click" type="mx.events.Event")]How do I dispatch the event when the component is clicked, when the component doesn't yet know how to respond to a click event? I've tried adding an event listener in the textfield which contains this custom class of text, but nothing's happening because the Click event hasn't been dispatched.
I want to override the dispatchEvent method while inheriting from flash.display.Sprite. Whenever an event gets dispatched now like ADDED_TO_STAGE and CLICK it will get through dispatchEvent in my theory. However there is no single trace he'll get through dispatchEvent.. so the events get dispatched internally from some where else?
I can do removeChild(instance); to remove a class instance that I add with the addChild() method... How do I delete a class instance which I just did a new Class()?[code]...