No probs mate, it was pissing me off not know what the problem was, too :) -J
On Mon, May 26, 2008 at 2:22 PM, dnk <[EMAIL PROTECTED]> wrote: > Dude, you rule! > > Thanks soooo much! > > Dnk > > > On 25-May-08, at 9:12 PM, Josh McDonald wrote: > > And don't forget to add: > > import mx.core.Application; > > Up the top :) > > On Mon, May 26, 2008 at 2:11 PM, Josh McDonald <[EMAIL PROTECTED]> wrote: > >> Ok mate, here's the problem: >> >> public function FlexbController() >> { >> //turn the key, start it up.... >> addEventListener( FlexEvent.CREATION_COMPLETE, onInit ); >> trace("Controller"); >> } >> >> What you need, is this: >> >> public function FlexbController() >> { >> //turn the key, start it up.... >> Application.application.addEventListener( >> FlexEvent.CREATION_COMPLETE, onInit ); >> trace("Controller"); >> } >> >> The reason for this, is the way CREATION_COMPLETE is dispatched - which is >> from the bottom of your display tree upward. It has to be this way, because >> it's dispatched only after all the children of a component have already had >> CREATION_COMPLETE dispatched. So first it is dispatched on all instantiated >> UIComponents that don't have any children. Then (probably on the next frame, >> but ask Alex) it's dispatched on their container components, and so on and >> so forth until finally (as far as we care) it's dispatched on your root >> Application. It might be then dispatched on a few containers up to the >> systemManager, but again Alex would know better than me. >> >> Now what happens in your case, CREATION_COMPLETE is dispatched on your >> FlexbController, and then you're dispatching the GET_NEWS_EVENT immediately. >> But, the current instance of FlexbController is not yet part of the >> displayTree, because it hasn't been completely added to the Application's >> children yet. So the event has nowhere to bubble to - and never reaches the >> Application, or the SystemManager. >> >> But, if you defer onInit() until CREATION_COMPLETE is dispatched on the >> Application itself, you know that the display tree is complete (in its >> initial layout at least), and you can safely dispatch the event and have it >> bubble all the way to the top of the tree at SystemManager. >> >> -J >> >> On Mon, May 26, 2008 at 1:35 PM, dnk <[EMAIL PROTECTED]> wrote: >> >>> Yeah that is what I thought. >>> >>> my onInit is called in my constructor with: >>> >>> addEventListener( FlexEvent.CREATION_COMPLETE, onInit ); >>> >>> >>> The requests for data are usually called after other adding of the >>> events, but within the same function (onInit). >>> >>> I think I will just ad my addEventListener calls direct in my >>> constructor and see what happens there. >>> >>> dnk >>> >>> >>> On 25-May-08, at 2:08 PM, Alex Harui wrote: >>> >>> > Timers are normally not necessary. You need to have a clear >>> > understanding of the application lifecycle and its events. I don't >>> > know >>> > when your onInit is getting called, but if it is after a request for >>> > data has been sent, that's too late, you need to do it before the >>> > request. >>> > >>> > -----Original Message----- >>> > From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] >>> > On >>> > Behalf Of dnk >>> > Sent: Sunday, May 25, 2008 11:40 AM >>> > To: flexcoders@yahoogroups.com >>> > Subject: Re: [flexcoders] custom event not added - almost solved. >>> > >>> > Ok, I might be onto something here.... I added trace statements in all >>> > handlers and contructors, etc.... >>> > >>> > And the order my traces come back are: >>> > >>> > Controller >>> > getNewsData >>> > onInit >>> > >>> > The order my traces SHOULD come back are: >>> > >>> > Controller >>> > onInit >>> > getNewsData >>> > >>> > Since my event listeners are setup in my onInit, and if they are being >>> > added after my initial dispatchEvent is sent... well obviously they >>> > will not be called..... >>> > >>> > So as a test I changed my onInt from: >>> > >>> > private function onInit( event:Event ):void >>> > { >>> > //setup event listeners >>> > /*systemManager is where event listener hangs >>> > out defines the >>> > relationship between event and handler*/ >>> > >>> > systemManager.addEventListener( >>> > GetNewsEvent.GET_NEWS_EVENT, >>> > handler_GetNewsEvent ); >>> > systemManager.addEventListener( >>> > AddNewsEvent.ADD_NEWS_EVENT, >>> > handler_AddNewsEvent ); >>> > >>> > systemManager.addEventListener( NewsDataLoadedEvent.NEWS_LOADED_EVENT, >>> > handler_NewsLoadedEvent ); >>> > getNewsData(); >>> > >>> > trace("onInit"); >>> > >>> > } >>> > >>> > To: >>> > >>> > private function onInit( event:Event ):void >>> > { >>> > //setup event listeners >>> > /*systemManager is where event listener hangs >>> > out defines the >>> > relationship between event and handler*/ >>> > >>> > systemManager.addEventListener( >>> > GetNewsEvent.GET_NEWS_EVENT, >>> > handler_GetNewsEvent ); >>> > systemManager.addEventListener( >>> > AddNewsEvent.ADD_NEWS_EVENT, >>> > handler_AddNewsEvent ); >>> > >>> > systemManager.addEventListener( NewsDataLoadedEvent.NEWS_LOADED_EVENT, >>> > handler_NewsLoadedEvent ); >>> > //getNewsData(); >>> > //dispatchEvent(new >>> > GetNewsEvent(GetNewsEvent.GET_NEWS_EVENT)); >>> > >>> > // Set a timer since the below function does not >>> > seem to get fired. >>> > var myTimer:Timer = new Timer(1, 1); >>> > myTimer.addEventListener("timer", getNewsData); >>> > myTimer.start(); >>> > >>> > trace("onInit"); >>> > >>> > } >>> > >>> > So I essentially setup a timer object to fire once like a second >>> > later, and it works. >>> > >>> > So now this does in fact work as expected, but the method does not >>> > seem "proper" to me. >>> > >>> > How would others get around this? Just do it the way I did? Or is >>> > there a more "proper" and "elegant" solution for this? >>> > >>> > DNK >>> > >>> > On 24-May-08, at 9:09 PM, Alex Harui wrote: >>> > >>> > > >>> > > Who's dispatching and how? >>> > > >>> > > >>> > > >>> > > When does the control get instantiated? Could it be after >>> > > creationComplete? >>> > > >>> > > >>> > > >>> > > If the controller is not a UIComponent, it will not get a >>> > > creationComplete. >>> > > >>> > > >>> > > >>> > > From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] >>> > > On Behalf Of dnk >>> > > Sent: Friday, May 23, 2008 4:48 AM >>> > > To: flexcoders@yahoogroups.com >>> > > Subject: [flexcoders] custom event not added >>> > > >>> > > >>> > > >>> > > Hi there, >>> > > >>> > > I have a controller that is adding my custom event listeners, but >>> > for >>> > > some reason my event handler was not being fired. >>> > > >>> > > My original code was (snippet): >>> > > >>> > > (in controler) >>> > > >>> > > //constructor >>> > > public function FlexbController() >>> > > { >>> > > //turn the key, start it up.... >>> > > addEventListener( FlexEvent.CREATION_COMPLETE, onInit ); >>> > > } >>> > > >>> > > private function onInit( event:Event ):void >>> > > { >>> > > //setup event listeners >>> > > /*systemManager is where event listener hangs out defines the >>> > > relationship between event and handler*/ >>> > > >>> > > systemManager.addEventListener( GetNewsEvent.GET_NEWS_EVENT, >>> > > handler_GetNewsEvent ); >>> > > systemManager.addEventListener( AddNewsEvent.ADD_NEWS_EVENT, >>> > > handler_AddNewsEvent ); >>> > > >>> > > >>> > systemManager.addEventListener( NewsDataLoadedEvent.NEWS_LOADED_EVENT, >>> > > handler_NewsLoadedEvent ); >>> > > getNewsData(); >>> > > >>> > > } >>> > > >>> > > And I had trace statements in all of my handlers... this is how i >>> > > noticed things were not working as they should. >>> > > >>> > > SO I added a simple check like (in my FlexbController constructor): >>> > > >>> > > if (systemManager.addEventListener( GetNewsEvent.GET_NEWS_EVENT, >>> > > handler_GetNewsEvent )) >>> > > { >>> > > trace("true"); >>> > > } else { >>> > > trace("false"); >>> > > } >>> > > >>> > > And I obviously am getting "false". >>> > > >>> > > Ideas? >>> > > >>> > > dnk >>> > > >>> > > >>> > > >>> > > >>> > >>> > ------------------------------------ >>> > >>> > -- >>> > Flexcoders Mailing List >>> > FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt >>> > Search Archives: >>> > http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo! Groups >>> > Links >>> > >>> > >>> > >>> >>> >>> ------------------------------------ >>> >>> -- >>> Flexcoders Mailing List >>> FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt >>> 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." >> >> :: Josh 'G-Funk' McDonald >> :: 0437 221 380 :: [EMAIL PROTECTED] >> > > > > -- > "Therefore, send not to know For whom the bell tolls. It tolls for thee." > > :: Josh 'G-Funk' McDonald > :: 0437 221 380 :: [EMAIL PROTECTED] > > > -- "Therefore, send not to know For whom the bell tolls. It tolls for thee." :: Josh 'G-Funk' McDonald :: 0437 221 380 :: [EMAIL PROTECTED]