Funny, I have a very similar example at my end that I wrote just now to prove to myself what was happening. I should have checked my email first ;-)
On Wed, Dec 10, 2008 at 16:22, Paul Andrews <[EMAIL PROTECTED]> wrote: > Here is a trivial example using dispatchEvent to show the synchronous > invocation of listeners that could (if badly written) interfere with > innocuous code. > > Normally when the "click to count" button is pressed, the count goes from 1 > to 10. > If the button to enable despatching the event is pressed, when the counter > reaches 5 an event is despatched. The event handler updates the counter, > adding 10 to it's value. > The output shows that despatched events do indeed invoke the listeners > synchronously and as this example shows, the listeners can interfere with > the smooth running of code if they are badly written. > > Trivial example, certainly, but it shows the principle. > > Paul > > <?xml version="1.0" encoding="utf-8"?> > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" > applicationComplete="init()"> > <mx:Script> > <![CDATA[ > public const UPSET_COUNTER_EVENT:String = "upsetCounterEV"; > public var counter:int; > public var counterEventEnabled:Boolean = false; > public function init():void { > this.addEventListener(UPSET_COUNTER_EVENT, eventListener); > } > public function eventListener(ev:Event):void { > counter += 10; > } > public function clickHandler():void { > counter=1; > for (var i:int =1; i<11; i++){ > ta.text+="counter="+counter+"\n"; > if ((i==5) && (counterEventEnabled)){ > this.dispatchEvent(new Event(UPSET_COUNTER_EVENT)); > } > counter++; > } > } > ]]> > </mx:Script> > <mx:TextArea id="ta" height="200" width="200"/> > <mx:Button label="click to enable event" click="counterEventEnabled=true" /> > <mx:Button label="click to count" click="clickHandler()" /> > </mx:Application> > >

