If you want to listen to events that are dispatched from Application, you
need to listen at either Application.application or (better) make them
bubble, and listen on the SystemManager.

-Josh

On Tue, Jan 6, 2009 at 8:58 AM, stldvd <stl...@yahoo.com> wrote:

> OK, here's a little app to demonstrate the problem. I'm sure the
> answer is obvious, but... can someone point it out?
>
> The Application and the Canvas go in the src folder; the custom event
> (FoodEvent) goes in an 'events' folder inside src.
>
> I made the canvas because I wanted the event to be heard in a
> different component from the Application itself.
>
> <?xml version="1.0" encoding="utf-8"?>
> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
> layout="horizontal" xmlns:food = "*">
>        <mx:Script>
>                <![CDATA[
>
>                import events.FoodEvent;
>
>          [Bindable]
>          public var food_supply:Array = [{label:"Pizza Pie",
> data:"Pizza"},{label:"Buffalo Wings", data:"Wings"}];
>
>        private function onFoodCBChange():void
>        {
>                var item:Object = foodCB.selectedItem;
>                if(item == null)
>                        return;
>
>                var event:FoodEvent = new FoodEvent(FoodEvent.FOOD_EVENT);
>                event.selectedItemFromFoodCB = item.data;
>                this.dispatchEvent(event);
>        }
>                ]]>
>        </mx:Script>
>                        <mx:Canvas height="167" width="200">
>                                  <mx:ComboBox x="40" y="20"
> dataProvider="{food_supply}"
> id="foodCB"  textAlign="left" change="onFoodCBChange()"/>
>                         </mx:Canvas>
>                        <food:testCanvas />
> </mx:Application>
>
> <?xml version="1.0" encoding="utf-8"?>
> <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml";
> creationComplete="this.addEventListener(FoodEvent.FOOD_EVENT,
> foodEventhandler)"
>         borderStyle="solid" borderColor="red" borderThickness="3" x="300"
> y="300" width="200" height="200">
>        <mx:Script>
>                <![CDATA[
>                        import events.FoodEvent;
>                        import mx.controls.Alert;
>
>                        private function foodEventhandler(e:FoodEvent):void
>                        {
>                                Alert.show(e.selectedItemFromFoodCB);
>                        }
>
>                ]]>
>        </mx:Script>
> </mx:Canvas>
>
> package events
> {
>        import flash.events.Event;
>
>        public class FoodEvent extends Event
>        {
>
>                public static const FOOD_EVENT:String   = 'food.event';
>
>                public var selectedItemFromFoodCB:String;       //Used to
> pass selection value
>
>                public function FoodEvent(type:String,
> bubbles:Boolean=false,
> cancelable:Boolean=false)
>                {
>                        super(type, bubbles, cancelable);
>                 }
>
>        }
> }
>
> --- In flexcoders@yahoogroups.com, "Tracy Spratt" <tspr...@...> wrote:
> >
> > It will depend on where and how the listener is declared.
> > CreationComplete fires at different times for different components.  As
> > I recall, it is bottom up, so creationComplete for a parent will fire
> > after creationComplete for a child.  If the parent creationComplete
> > handler declares the listener, then there would be a problem.
> >
> >
> >
> > This should only be an issue on start-up.  Certainly the listener would
> > be available when the app was ready to receive user input, via ComboBox
> > or button click, as the original poster noticed.
> >
> >
> >
> > Remember that events flow through the DOM.  It is possible for a
> > dispatched event to "miss" a component.  Pop-ups are a particular
> > problem.
> >
> >
> >
> > Tracy
> >
> >
> >
> > ________________________________
> >
> > From: flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com] On
> > Behalf Of stldvd
> > Sent: Monday, January 05, 2009 4:48 PM
> > To: flexcoders@yahoogroups.com
> > Subject: [flexcoders] Re: why I can not dispatchEvent with
> > creationComplete?
> >
> >
> >
> > I'm having a similar issue. Event is dispatched (I can step through
> > code and see it) but the event listener is never hearing it, and so
> > the listener function is never being fired.
> >
> > How does one tell if the listener is ready or not? If you add the
> > listener on the creationcomplete or initialize event of an mxml
> > component, it should in theory be ready to fire, for the duration of
> > the app, right? And if you're dispatching a custom event when an item
> > is selected in a combobox, it should certainly work. What could be the
> > reason for a 'deaf' event listener? :)
> >
> > -- David
> >
> > --- In flexcoders@yahoogroups.com 
> > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.com>
> >
> > , "Tracy Spratt" <tspratt@> wrote:
> > >
> > > Perhaps the listener is not yet ready when the canvas creationComplete
> > > fires?
> > >
> > > Tracy
> > >
> > >
> > >
> > > ________________________________
> > >
> > > From: flexcoders@yahoogroups.com 
> > > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.com>
> >
> > [mailto:flexcoders@yahoogroups.com 
> > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.com>
> >
> > ] On
> > > Behalf Of markflex2007
> > > Sent: Monday, January 05, 2009 2:08 PM
> > > To: flexcoders@yahoogroups.com 
> > > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.com>
> >
> > > Subject: [flexcoders] why I can not dispatchEvent with
> > creationComplete?
> > >
> > >
> > >
> > > I try the following code, But I can not dispatchEvent.
> > >
> > > <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml
> > <http://www.adobe.com/2006/mxml>
> > > <http://www.adobe.com/2006/mxml <http://www.adobe.com/2006/mxml> > "
> > > creationComplete="justLogin()" >
> > > <mx:Metadata>
> > > [Event(name="loginEvent", type="flash.events.Event")]
> > > </mx:Metadata>
> > > <mx:Script>
> > > <![CDATA[
> > >
> > >
> > > private function justLogin():void{
> > >
> > > dispatchEvent(new Event("loginEvent", false));
> > >
> > > }
> > > ]]>
> > > </mx:Script>
> > >
> > > </mx:Canvas>
> > >
> > > I can dispatchEvent with button click, please let me know how to
> > > automatic dispatchEvent in page start.
> > >
> > > Thanks
> > >
> > > Mark
> > >
> >
>
>
>
> ------------------------------------
>
> --
> Flexcoders Mailing List
> FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
> Alternative FAQ location:
> https://share.acrobat.com/adc/document.do?docid=942dbdc8-e469-446f-b4cf-1e62079f6847
> Search Archives:
> http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo! Groups
> Links
>
>
>
>


-- 
"Therefore, send not to know For whom the bell tolls. It tolls for thee."

Like the cut of my jib? Check out my Flex blog!

:: Josh 'G-Funk' McDonald
:: 0437 221 380 :: j...@gfunk007.com
:: http://flex.joshmcdonald.info/
:: http://twitter.com/sophistifunk

Reply via email to