ActionScript 2.0 :: Event Dispatcher: Only Receives Event Once
Mar 26, 2006
So I have two classes talking to each other with EventDispatcher. One is a thumbnail of an image, and when it's clicked, it sends an event to the other class to display the full size version. I'm using a MovieClipLoader instance to load the full version (and the thumbnail).
Here's how it's sending the event from the thumbnail class:
Code:
private function initButton () {
this.loadMe.onPress = function () {
this._parent.sendEvent();
}
[Code]....
The problem I'm having is it loads the full size version ONCE. After that, it no longer receives the event. The ("event received") trace no longer comes through. But the ("send event") trace continues to work.
The other weird part is if I comment out the loadClip, then the events come through just fine on both sides. But it's like after it loads an image once, it quits responding to that event ('onPhotoSelected'). Is there some kind of mis-communication between the events of the MovieClipLoader and my custom event or something?
I'm programming a little tank game (Check the attachment). The main class for tank is game.serovkonstantin.tanks.Tank.as and there are also 2 subclasses for now: Abrams and T90 which extend Tank. In my game.serovkonstantin folder I have a custom event (TankEvent), and the only event type inside of it which is TANK_INACTIVE.
I've added an event listener for MouseEvent.CLICK to each of the tank instances (inside Tank.as) which works just fine. When I add any of the tank instance onto the stage and click it, it traces the tank's name just like I wanted whether it's Abrams or T-90 depending on what tank I clicked. But the problem is that when I click a tank I also want it to dispatch my TankEvent.TANK_INACTIVE. The main stage has a listener for this event, so I expected it to catch the event and trace some phrase, but nothing happens I don't know whether it doesn't dispatch my event or doesn't catch it.
======== if you're interested why I need to dispatch this event, well,I suppose it will help my game know what tank to move when I click somewhere on the stage, and what tank(s) should be inactive,event it they all of the same type. I mean if I click one of the tanks it accepts all the controls while the other should be inactive
I'm having a Panel container with buttons and other controls in it. When the mouse moves over one of the container's children (e.g. a button), the Panel receives a MouseOut event where the target and currentTarget properties reference the Panel itself. That causes me problems. I only want the Panel MouseOut event when I leave the panel, not when I enter a child of the panel. Are there any way to turn that off?See example:
I have two movieclips: MovieClip X and MovieClip Y.
MovieClip Y is nested inside of MovieClip X. MovieClip Y contains buttons with listeners attached to them. These listeners call a method
Code: buttonClickedHandler();
inside of buttonClickedHandler();... dispatchEvent() is called to dispatch a custom event that bubbles up to MovieClip X. This chain of events works as intended, I can set up a listener in MovieClip X for the custom event and everything is fine...
The problem comes when I try to invoke a dispatch on a button in MovieClip Y without actually physically clicking it. If i call
the listener for the button click event will fire properly, and if i trace the dispatchEvent of the custom event, it returns true meaning the event was dispatched successfully. But in MovieClip X... the listener for that custom event is never fired, its as if the custom even is not bubbling.
How do i create a trace that can detect if an event dispatcher is dispatching an event?....my problem is i've created a custom event that is not being dispatched i use this custom event in other applications and have verified that the code is correct I'm not getting any errors neither it just dies silently
there are 2 functions in my code that dispatch a TweenEvent. each function dispatches the same tween and adds the same TweenEvent.MOTION_FINISH event listener. however, the event listening function must act according to which function dispatched the event. is it possible to get the function of the event dispatcher from the event listener? i could use a flag to make this work if there are no other elegant solutions.
I've a parent (Canvas) with many children (LinkButtons)The linkButtons trigger an event to communicate between them:[code]Now, the issue is that the event is only listened by the dispatcher child. In other words, only the child triggering the event, is receiving it. I was wondering what's wrong with it, and if I should add a listener to the parent (Canvas)I basically need the children (LinkButton) communicate between them
I have a loaded swf (CustomClass) and I want to listen a dispatch event from the swf, but it doesn't seems to work. The relation of the dynamic class are: Code: tablet(DocClass of the swf) ---> mainmenuC I'm trying to pass a event to a function in tablet, and have the codes listen to the dispatchEvent from the function in tablet.
ActionScript Code: CustomClass.addEventListener("profile_home", currentPage) private function currentPage(event:CustomEvent):void { trace("profile home clicked") } tablet.as [Code] ..... It doesn't return any error, but why does it not pass the data?
I'm building a flash app (just AS3 with FlashDevelop) and I'm having some trouble keeping things loosely coupled around the event system. I've done a lot of reading about central event systems and static eventdispatchers but they don't quite fit the bill for me. What I'm building is similar to a video player.I have a Player class which is the parent of all the other little parts of the app.The Player class extends Sprite and I've currently designed it so that you could instantiate multiple Player's and put them on the stage.I also have a Controller class which extends EventDispatcher and I dispatch all my events through this class. It's a central event class.
The problem is that I need to pass around a reference to this class so that all the other classes can dispatch and listen through it. Passing around the reference works but it's the exact opposite of loose coupling. I know I could make a static EventDispatcher that all the classes could see but then if I had two or three Player's on the stage they would all hear each others events.How can I create a type of sandbox that will allow all the child classes of a Player instance to be aware of the central dispatcher without passing a reference or making it static?
I'm having an issue with an event dispatcher and an event listener. Here is the application code... Code: Select allpackage { import flash.display.MovieClip; import flash.events.*; import flash.net.URLVariables; import SendAndLoad; public class Test extends MovieClip { [Code] .....
It will trace the loader.data variables but doesn't dispatch the event to the main application (Test). I'm listening for the event on the stage of the main but it doesn't trigger the event to display that the login has been successful even though it traces from the sendAndLoad class...
So I have a small game where I have implemented a* path finding. I have a spot where a player moves around the screen along the path found. I have a section where i know the user is at the end of the path and I am looking to dispatch an event at this moment so I can do things at the end of the path.
i have imported the aStar_path_dispatcher file into the move class then i do,
[code]...
then in my main document class i import the aStar_path_dispatcher again, and set up an instance of it: then add a listener:
[code]...
however this "move finished" doesn't seem to want to work. I have never used custom events before
class Foo { [Bindable] public var property: String; }
The class Foo has an implicit event dispatcher to handle property change events. How can I access that without making Foo explicitly extend EventDispatcher?
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 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 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.]
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]...
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?
My stage has about 25 buttons on it. Each button when pressed to tweens the background to some random x/y coordinates and then loads an external swf file.This is all working, but the timing is off. How can I wait for the initial background tween to end before I make the loader call to the .swf file.Currently each button's behavior is called on the MouseEvent.CLICK event which calls a function that knows its unique filename.swf. I know you can add the MOTION_FINISH even to the tween event but then I would have to call a new function and lose track of the button that initially called it.