I guess the idea would then be to apply a Front Controller Pattern.


On 29/03/2007, at 1:50 PM, iilsley wrote:


Thank you for responding , interesting but not really what I'm looking
for. Your example makes it 'tightly coupled' ( if thats the correct
terminology :) ) .. ie. Application relies on comp1 being a child and
also having a 'fired' method.

The ultimate goal is to have a bunch of 'panels' that will 'refresh'
their data based on a 'global' timer .. My concern was using the
'Application.application' for the addListener but I guess thats what
I'm trying to 'capture' - ie. an event thats dispatched from the
'Application' ..

--- In flexcoders@yahoogroups.com, Bjorn Schultheiss
<[EMAIL PROTECTED]> wrote:
>
> How about this
>
> <?xml version="1.0" encoding="utf-8"?>
> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
> layout="absolute" xmlns:ns1="*" creationComplete="init()">
>
> <mx:Script>
> <![CDATA[
> import flash.utils.Timer;
> import flash.events.TimerEvent;
>
> private function init():void
> {
> var timer:Timer = new Timer(1000);
> timer.addEventListener( TimerEvent.TIMER, comp1.fired );
> timer.start();
> }
> ]]>
> </mx:Script>
>
> <ns1:PanelComp id="comp1" />
>
> </mx:Application>
>
>
> <?xml version="1.0" encoding="utf-8"?>
> <mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml"; layout="absolute"
> width="400" height="300">
> <mx:Script>
> <![CDATA[
> public function fired( e:TimerEvent ):void
> {
> trace('fired');
> }
> ]]>
> </mx:Script>
> </mx:Panel>
>
>
>
> On 29/03/2007, at 11:21 AM, iilsley wrote:
>
> >
> > Thanks for the response ..
> > This is the code that I have ( it works ) but is it the right way
> > to do it :) ..
> >
> > <?xml version="1.0" encoding="utf-8"?>
> > <mx:Application
> > xmlns:mx="http://www.adobe.com/2006/mxml";
> > layout="absolute"
> > creationComplete="init()"
> > width="100%" height="100%" xmlns:ns1="*">
> > <mx:Script>
> > <![CDATA[
> > import flash.utils.Timer;
> > import flash.events.Event;
> > private var cnt:int=0;
> >
> > public var tm:Timer = new Timer(1000,0);
> > private function init():void
> > {
> > tm.addEventListener(TimerEvent.TIMER,fired);
> > tm.start();
> > }
> >
> > public function fired(Timer:TimerEvent):void
> > {
> > dispatchEvent(Timer);
> > t.text = (++cnt).toString();
> > }
> > ]]>
> > </mx:Script>
> >
> > <mx:Text id="t" text="here"/>
> > <ns1:myPanel x="145" y="95">
> > </ns1:myPanel>
> > </mx:Application>
> >
> > and then the myPanel.mxml source
> >
> > <?xml version="1.0" encoding="utf-8"?>
> > <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml";
> > creationComplete="init()" width="100" height="100">
> >
> > <mx:Script>
> > <![CDATA[
> > import mx.core.Application;
> > import flash.events.TimerEvent;
> >
> > private var cnt:int=0;
> > private function init():void
> > { Application.application.addEventListener (TimerEvent.TIMER,fired);
> > }
> >
> > private function fired(e:TimerEvent):void
> > {
> > t2.text = "myPanel "+(++cnt).toString();
> > }
> > ]]>
> > </mx:Script>
> > <mx:Text id="t2" text="here"/>
> > </mx:Canvas>
> >
> > --- In flexcoders@yahoogroups.com, "Tracy Spratt" <tspratt@> wrote:
> > >
> > > If an event "bubbles" you can listen for it in any ancestor, like
> > > Application.application.
> > >
> > >
> > >
> > > Look at the docs for the timer event, to se if if bubbles. If it
> > does
> > > not, in the timer component, re-dispatch an event, setting the
> > second
> > > argument to true, to make it bubble.
> > >
> > >
> > >
> > > Tracy
> > >
> > >
> > >
> > > ________________________________
> > >
> > > From: flexcoders@yahoogroups.com
> > [mailto:[EMAIL PROTECTED] On
> > > Behalf Of iilsley
> > > Sent: Tuesday, March 27, 2007 11:50 PM
> > > To: flexcoders@yahoogroups.com
> > > Subject: [flexcoders] newbie question: Timer across components..
> > >
> > >
> > >
> > >
> > > Is it possible to have a Timer in one component and have another
> > > component
> > > execute a function when that timer fires ?
> > >
> > > eg:
> > >
> > > Comp1 has a timer set for 3 seconds ..
> > >
> > > In Comp2 I want to 'capture' the TimerEvent.TIMER from Comp1 to
> > execute
> > > a function defined in Comp2..
> > >
> > > ---
> > > I currently have something working but I kinda feel its just not the
> > > right way .. :) ..
> > >
> > > In Comp2 I have
> > >
> > > Application.application.ti.addEventListener (TimerEvent.TIMER,fired);
> > >
> > > where 'ti' is the Timer .
> > >
> > > Is there a better way to listen for the event ?
> > >
> > >
> > > Thanks
> > >
> >
> >
> >
>




Reply via email to