ActionScript 2.0 :: Event Dispatcher From Child SWF To Parent?
Dec 14, 2009I'm still getting confused with the whole event dispatching feature...all I need to do is fire a single event from a child swf to it's parent in as2..
View 0 RepliesI'm still getting confused with the whole event dispatching feature...all I need to do is fire a single event from a child swf to it's parent in as2..
View 0 RepliesI have these buttons in a movie clip and I would like to have only one event listener for the parent, using event.target to point to the children. I have also tried event.currentTarget, and it didn't work.here is the code that works:
test01.abtn.addEventListener(MouseEvent.ROLL_OVER, mouseHandler);
test01.bbtn.addEventListener(MouseEvent.ROLL_OVER, mouseHandler);
test01.cbtn.addEventListener(MouseEvent.ROLL_OVER, mouseHandler);[code]....
It is only targeting the movie clip, not the buttons inside the movie clip.
I got a Parent Sprite, let's name it SpriteP, which holds inside it two other Sprites. Sprite1 and Sprite2.[code]Sprite2 is a rectangle. When I rotate it, of course, the height of its parent, SpriteP, GROWS. But I would expect that height to go back to what it should be when I'm removing Sprite2!And it does! If I remove Sprite2 while NOT being rotated, the height of the parent drops back to normal, 200.
View 10 Repliesi am slightly confused about the parent and child relationship. lets assume we have several different instances, what would be difference of adding them all as children of the stage and creating a parent-child hierarchy between them(other than the access path).
View 5 RepliesI got a Parent Sprite, let's name it SpriteP, which holds inside it two other Sprites. Sprite1 and Sprite2.
When Sprite2 is NOT rotated:
Code:
trace(SpriteP.width + ' ' + SpriteP.height); //100 250.
SpriteP.removeChild(Sprite2)
trace(SpriteP.width + ' ' + SpriteP.height); //100 200. -> works, 200 is good.
When Sprite2 is rotated at 90:
[Code].....
And it does! If I remove Sprite2 while NOT being rotated, the height of the parent drops back to normal, 200. But if I rotate Sprite2, the Parent won't update its bounds.
I'm trying to place an event on a child and not the parent but it doesn't seem to trigger the event. Example.
Code:
parent.child.buttonMode = true;
parent.child.addEventListener(MouseEvent.ROLL_OVER, onMouseOver );
private function onMouseOver(evt : MouseEvent) : void{
trace("child = "+evt.target.name);
}
The above event is not getting fired.
Can a parent .swf listen for an event in a child .swf?
View 3 RepliesI have a child swf that dispatches as custom event:
dispatchEvent(new ModuleUpdateEvent(ModuleUpdateEvent.UPDATE_STRING, topicName));
My parent swf is listening for that event.
override protected function moduleLoaded(event:Event):void
{
_laoderInfo = event.target as LoaderInfo;
_laoderInfo.content.addEventListener(ModuleUpdateEvent.UPDATE_STRING, onUpdateFromModule);
}
When I trace/debug out the _laoderInfo.content it clearly says it is the child swf that was loaded in. however my listner function never fires.
private function onUpdateFromModule(event:ModuleUpdateEvent):void
{
trace("
[Code].....
I have a simple 2 class game Im working on. It has a document class (BubbleBuster.AS) and a Bubble class (Bubble.AS). In the doc class I made a container sprite called bubbleContainer. I add bubbles (instances of Bubble.AS) to the bubbleContainer. When the game is over I fire a custom event in the bubbleContainer from the doc class like so:Code:bubbleContainer.dispatchEvent(new Event("gameOver"));Now I want to listen for this event in the Bubble children so I can kill tweens and remove things. So in the Bubble.AS I have:Code:parent.addEventListener("gameOver", gameOver);this compiles fine. But as soon the 1st Bubble is added to bubbleContainer I get this error (and no bubble appears):TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Bubble/init()
at Bubble()
at BubbleBuster/addBubble()
[code].....
I have an element which listens for the MOUSE_DOWN, MOUSE_OVER, and MOUSE_OUT; in that there is a child which listens for MOUSE_UP, MOUSE_OVER, and MOUSE_OUT. The issue is that although OVER and OUT seem to work together (And I like how that is) I need it that if the child is clicked, that the parenet doesn't recieve it. (Right now they both recieve them all, and I only want OVER and OUT to be recieved by both)
View 0 Replieswould like to receive an event(Dispatchd in Parent swf) in Child SWF, the bold italic text represents the piece of coding i
//in PARENT SWF i have -----------------------------
dispatchEvent(new Event("CloseDoors"))
// in Child SWF --------------------------------
[code].....
I'm building an all flash site, where one .swf acts as the parent, and other external child .swf's are loaded in using .xml. The "Child.swf's" are a mixture of timeline animations, and coded swf's, and the problem I'm having is that they immediately start playing as soon as they are loaded. I've not been able to find any straightforward "child.start() or child.stop()" solutions, so I assume it's more involved than that.
I thought it might be a good idea if I could dispatch events from the parent swf that will set them going. I'm using the sharedEvents method to communicate in the reverse direction (child to parent), but I don't believe it can be used from parent to child (Please correct me if I'm wrong!) I know I could go to each child and put "stop();" in the first frame, but how do I start it again? I would also prefer it if not all the child .swf's started immediately, but to wait until others have completed their routines. Again the way I see it is to dispatch an event from the parent .swf as soon as I'm ready to set them going.
I have a dialogBox with 2 buttons - ok_btn and cancel_btn. The code is in a Class - testDialog.
There are 2 issues:When any of the 2 buttons clicked, they dismiss the dialogBox without sending any alert to the parent (main time-line).How to trap the clicked buttonId in the parent.I have just an idea of the solution as dispatching an event in the child and listen for that event in the parent. But, unfortunately, I don't know how to go about it.
To make my point clear, here is the code:
Code:
package
{
import flash.display.*;
import flash.events.*;
[Code].....
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 have a movieclip(parentMC) which consists of several other movieclips(childMCs). Each childMC can trigger an event, and each event performs a different function. I want to check from my parentMC whenever there is an event triggered by any of its child.
View 3 RepliesI have two swfs for a project, I had both of them to dispatch events to each other. Parent loads child and is listening for the compete load event. Once that event is dispatched to the child - the child dispatches a start event back to the parent. I got this working by copying the ModelEvent(my custom event) in each of the flash builder actionscript projects in the exact file structure ( i think i was cheating it there, since )
It broke when I put the swf on separate domains, so I'm thinking I'm missing something to share the custom event class between two swfs.
[Code]...
I have a .swf file (parent) that loads another .swf (child) file.
I would like to dispatch an event to the child (.swf) file, but I am not sure how to do this in a way that avoids coupling?
I am wondering how to correctly reference child/parent movie clips when creating event handlers? I have a button within a movie clip, which is within a movie clip.This is what my handler looks like right now:
this.DropMenus.DMSeats.ButtonSeats.addEventListener("click",SeatsOver) ;
The button instance name is ButtonSeats Problem is, I get this:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
Also, if I were to move the vent listener directly into the movie clip where the button is located, how could I reference the parent/ parent timeline(the main timeline)? Am I correct to understand that .this refers only to the current clip?
I have created event listeners for a particular movieclip.Insidet this movieclip there is so many objects.When ever I click on the parent movieclip the event listener calls the function for the child object. I had tried removeEventLIstener()
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
var info:MovieClip=new MovieClip();
info.graphics.beginFill(0x000000,0.35);
[Code] .....
I want to delete mc's parent
I have a parent sprite containing a child named controlBar, whose visibility is initially set to false. When the parent sprite is moused over, controlBar's visibility is set to true, and when the parent sprite is moused out, controlBar's visibility is set to false again, like so:[code]This works fine when mousing over and out of the parent sprite, but then when I mouse over the controlBar, the parent sprite dispatches the MOUSE_OUT and MOUSE_OVER events again, which quickly sets controlBar's visibility to false and then true, and occasionally causes controlBar to flicker. This is exacerbated when mousing around in controlBar, because it contains four spaced-apart buttons, and the parent sprite dispatches MOUSE_OUT and MOUSE_OVER events when mousing from one button to another.What's a simple way to stop the parent sprite from dispatching a MOUSE_OUT event when mousing over its child controlBar?
View 1 RepliesI have two swf file, A.swf and B.swf, each with its Document Class: B.swf is loaded in a MovieClip of A.swf. When loaded, B.swf creates an instance of CSDragger (it is a library object with its class extending MovieClip) and sets an ID property of this instance to a certain value. When this dragger is dropped by the user upon a MovieClip it sends a custom event containing the value of ID too. The custom event regularly reaches B.swf but never reaches A.swf. Aside from refactoring the CSDragger class (eg moving its handleDrop method in the B.swf document class), is there any way for the event to reach A.swf? I know I can intercept it and dispatch another event, but I was looking for a different solution (if any).[code]
View 1 RepliesSo 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?
[code]All clips are squared.Ok, on the PlayerPlane, there are little soldiers, which have hotkeys. The effect I'm trying to create is I want to position the GameStage so that the currently selected soldier appears in the center of the GameClicker clip.The GameStage is movable by the player (to scan other areas of the map)by holding the CTRL key, so it's easy to kinda lose track of where your players are.I have tried using localTo Global and globalToLocal techniques, but I think I'm lost on the actual math of getting the GameStage to move the correct distance so that the selected soldier is centered to the GameClicker.[code]
View 2 RepliesI 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
Code:
ButtonA.dispatchEvent(new MouseEvent(MouseEvent.click));
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
View 1 Repliesthere 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.
[Code]....
I created a class that extends the displayObject3d and added an Event dispatcher like bellow:
Code:
package {
import flash.display.Sprite;
import flash.display.Stage;
import flash.events.Event;
[code]....
but unfortunately the event never dispatches.
If I have an event listener which picks up an event, how can I remove the event dispatcher? I would be looking for something like this.
Code:
addEventListener(MouseEvent.CLICK, onClick, true);
function onClick(event:MouseEvent):void
{
event.target = null;
}
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
View 1 RepliesI 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?