ActionScript 3.0 :: Dispatching An Event From One Class To The Other
Sep 24, 2008
I have two document classes. The main document class creates a empty movieClip and adds it to the stage in which the second document classes published swf is loaded into. The second document class has a button component on the stage in which once clicked just traces 'hello' to the output window.
What I want to do is upon clicking this button a Event is dispatched from the second document class, to the main document class. Now, I've Googled everything in this known world and have tried to implement examples to no avail. I'm really at a loss right now yet I stubbornly intend to keep banging my head against the problem. Below I have pasted both document classes minus the examples I've tried to implement thus far.
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 developing a project where ClassA creates the instances of ClassB , ClassC and ClassD and adds the eventsDispatcher with them. ClassB and ClassC are able to dispatch the events back to ClassA which is fine. But ClassD is not dispatching the event. It only dispatch the event only when I call the dispatchEvent(new Event(Event.Complete)) function after giving 1 Second delay.
I have a class name ImageLoader that is used to load image and the dispatch a complete event when the image is loaded. This class is implementing singleton design pattern which means that only one instance is created always for this class.
Everything is working fine it is loading the image but in the initListener function i am dispacthing a complete event to let the other class Content (which passes the image name to this class ) that the image is loaded and you can access it now.
BUt the problem is the event is never dispatched or may be it is but I am not catching it properly here is code for my ImageLoader class.
So I am able to dispatch the event from one class and trace out that the custom event was dispatched, but where I am having trouble is listening for that event in another class.
I think this is a pretty simply problem but I do not seem to be able to pull it off. Basically I have a parent class A, and a child class B.Class A instantiates class B with addChild.There is a shared object which is being updated from a java server (red5) that has an event listener attached to it in class A.I have a function in class A which will pass certain, specific updates from this shared object to class B.The problem occurs is that when class B is instantiated, the event listener from class A doesn't work anymore. I have not removed the event listener from A.?
I have a repeater component with custom event. My repeater components fires custom event holding data. My need is to dispatch event so other repeater components can access data from dispatching component.
I´m making a game.This game has 4 frames.It has a preloader.swf and game.swf.The preloader.swf loads the game.swf.The game.swf has 4 frames.In the first frame is given to the user the options to play the game (clicking a button "playGame" on "click" event) and to set the sounds settings (clicking a button "options" on "click" event).So far so good.
When the user clicks "playGame" I send the user to frame 2, where it has the option to select a game level using the arrow keys. So within the playGameListener I registered two keyboard events one for KEY_UP and another for KEY_DOWN. So, to have sure that it´s working, I added a trace for each keyboard event listener. But I´m not getting any message in the output window while pressing left arrow or right arrow or any arrow.
So I learned that KeyboardEvent only dispatches an event if the flash player has focus.Well I think the flash player has never losed focus in this process.I´ve registered two events for Event.ACTIVATE and Event.DEACTIVATE and inside its listeners I added a trace with a message. Flash outputs me a message if I minimize the flash player window or if I maximize the flash player,but not while the game.swf´s frame transition.The listeners for the KeyboardEvent works only when I press at the flash player, then I receive the messages from the KeyboardEvent listeners.
I have two buttons each in its own sprite now I want to listen for mouse overmout and click event on both. In a way that if you roll over button1 its color changes but at the same time button2 color changes as well.
To be more specific lets suppose I have a graphic button like map picutre for a country like UK and then I have text button for UK as well. What I want now is that when user either scrolls over UK map the map button color changes but at the same time the color for UL text button changes as well. same goes for click and out events for the two.
May be my title doesn't clearly reflect to what I am saying. Let me demonstrate with following example
[Code]....
Instead of doing this type of event listening,is there a way, by which the final class can listen to "firstDispatch" event without going through its object as shown above
I have a parent swf and eight child swfs. The child swfs are loaded into an array at runtime on the parent swf using a Loader. I have buttons and functions on and in the parent swf to change out the child swfs. This all works just fine but here is my issue. On each of the child swfs I have buttons that need to call the functions in the main swf to change out the child swfs. The program is an interactive virtual tour and I want to be able to click on a door and have the next room's swf displayed in the parent swf. I'm trying to do this by dispatching an event from the child swf
ActionScript Code: mainPanorama.bedDoor.addEventListener(MouseEvent.CLICK, dispatchBedroom); function dispatchBedroom(e:Event):void { dispatchEvent(new Event("loadBedrooms")) }
that needs to be heard by the parent swf and the appropriate function called.
So far this specific code keeps telling me that addEventListener is not a function. I've tried quite a few variants of stage, this, and parent combinations in place of objectsArray but unfortunately something in the parent swf is not hearing the event dispatch.
Does flash dispatch any event just before it's closed?e.g. When the user closes the browser? searched the documentation and there's nothing. I thought the stage should dispatch an ventIf there isn't any can I make a custom one?
I'm working on a project and had a question related to another thread I recently posted earlier this week regarding an area I was a little stuck on..While I did manage to resolve most of my issue, there's still a piece of the puzzle that's missing. I basically have one main container swf that loads several external swfs into a MC and cycles through an array of external files. I have navigation buttons so the user can click next to proceed through all of the external content files. My goal here, is to not have the "next button" become active until after the external files are done playing, so they can't skip ahead.
I currently have this working by having the external swf dispatch an event (from its final keyframe) to the main swf telling the main swf it's done playing, and then activates the next button on completion. This works great; however, I can't seem to get it to dispatch this event on any of the sequential swfs -- it only does this for the first swf initially loaded. Is there a way to "reset" the event to detect the end of the other swfs and continue in this fashion? Or another possible solution so I can apply this to each external swf?Here is the code I have in the main container swf:
Code: //Array of external swfs var contentArray:Array = new Array("content1.swf", "content2.swf", "content3.swf");
What I am trying to do is build some kind of Loader-SWF that loads several animations (swf-files) and then plays them back one after the other.
What I am struggling with at the moment is how to find out when the first animation has finished and then switch to the second one. Since the Loader-Object I use to load the swf doesn't seem to dispatch a suitable event I thought I'd just do the following on the last frame of the animations I am loading:
Code: stage.dispatchEvent(new Event('nextClip')); and then have this in my "Loader":
This works fine when I just have my first animation clip dispatch the Custom Event, but as soon as I add the code to all the other animations it will throw an 1009 error (referring to the last frame of the newly added animation) as there somehow seems to be some confusion regarding what "stage" is referring to now.
Instead of doing this type of event listening,is there a way, by which the final class can listen to "firstDispatch" event without going through its object as shown above
I'm just starting to build my first proper OOP piece.I have on stage two manually placed MCs.One is viewer_mc:ViewerClass and one is menu_mc:MenuClass.They each have their own class and there is a document class...
PHP Code:
package { import flash.display.*;[code]....
So I can call the public method of either class from the other class.However, I am now trying to understand custom events and dispatching them with parameters.which uses a custom event class.This works fine when the dispatchevent and listener are both in the viewer class, but when the dispatchevent is in the viewer class, and the listener is in the menu class I can't get it to work.I suppose for my purposes I don't really need to use the custom event class, I can just call the respective classes' public functions but I just wanted to try and understand how it works.Here's the pared down version of menu class...
PHP Code: package classes { import flash.display.*; //some other imports[code].........
Let's say function foo() is executing. Suppose that an external event occurs, for which you have a handler. Will function foo() be interrupted so that the event handler can be executed? What is the order of execution in this situation?
I got a question about event dispatching in flex.my goal is to get a custom event loaded up with some data and than bubble up to the eventlistener. my main application has and AMF service request inside which calls an service class. that class is supposed to dispatch an event when the AMF service request returns a result or fault and the main application is listening for that event.so inside my mainapp i add and listener like this:[code] However, this event never reaches the main application. Looking closely to it with the debugger, i found out that when the event is dispatched the listeners property of it is set to null.
I'm trying to dispatch a custom event from a custom ItemRenderer. This is my custom event package events { import customClass.Product; import flash.events.Event; public class CopyProductEvent extends Event { public static const COPY_PRODUCT:String = "COPY_PRODUCT"; public var picked:Prodotti; [Code] ..... The event from the function is dispatched correctly... I can't intercept it..
I've written lots of hierarchical menus in AS2, am happy with XML, recursion and the Compound design pattern.owever, I'm about to built my first AS3 menu system, and what I want to know is where do people usually add their event listeners? Should I be adding them on each menu item, or just one on the whole menu system, and use event bubbling to capture and respond to clicks, rollouts, etc.
It's me back with my fighting game questions. Basically, in the frames of the animations, events are dispatched. When one is being dispatched, I dont want the other one's function to be performed...I'm probably making this alot more confusing than it is supposes to be... If you can just picture it, in a fighting game I dont want the enemy to take damage, while both he and the player are colliding and attacking (whichever one was attacking first). geez that was a ramble.[code]
I've a Services class...which handles the HTTPService requests and responses and faults. Now I want to dispatch a new event whenever I send request to the server...so that I can take custom actions like showing some popup window or disabling certain components.
Here is my services class: PHP Code: package business{ import mx.controls.Alert; import mx.managers.CursorManager; import mx.rpc.AsyncToken; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.rpc.http.HTTPService; [Code] .....
The method doRequest calls the HTTPServices send method...so in this method, I want to dispatch a new event and handle it in the main application...
I have read at multiple places tutorials/explanations on the EventDispatcher use in AS3 and that confuses me a lot. how I should do to just send a simple message from a ClassB to a Class A. In the exemple below that I made, I have classA that calls classB to send a message that ClassA then gets. Of course, I simplified to the minimum the 2 classes to allow focusing on the problem. Currently, the exemple does NOT work, i.e. the line "trace ("message was received!");" is not executed. I saw in several exemples on the web that some put the addEventListener on the EventDispatcher object. I do not understand the logic behind this, I would put the addEventListener on the objects that will receive the message.
for one of my project I need to recive some x,y data from a socket connection. I recuired do some movement for moveclips those has the x,y in its bounds. kind of mouseover event.
what I fegured out is, if I can dispatach a event and add a listenr to all my movieclips the moveclips will know that new data recived and it will check that the number and do appropriate action.
but the problem is I can dispatchEvent but if I add a listener to my movieClips it doesn't work.
/// this way works /// function readResponse():void { var str:String = readUTFBytes(bytesAvailable);
Can I dispatch events from javascript to flash player? I am trying to do so by calling dispatchEvent() on flash player dom object but the event is not passing inside flash player.