I'm really stumped by this. Is there *any* way I can display a busy during a long-running *synchronous* operation?
On Mon, Nov 16, 2009 at 10:29 AM, Richard Rodseth <[email protected]>wrote: > Can anyone suggest a solution? > > > On Wed, Nov 11, 2009 at 3:23 PM, Richard Rodseth <[email protected]>wrote: > >> So I tried this pattern: >> >> private function onClickSave(event:Event):void { >> >> CursorManager.setBusyCursor(); >> var generatePDF:Function = function(e:Event):void { >> .... >> savePDF(bytes); >> }; >> >> // Delay start so cursor can display >> var timer:Timer = new Timer(1, 1); >> timer.addEventListener(TimerEvent.TIMER, generatePDF); >> timer.start(); >> } >> >> private function savePDF(pdfBinary:ByteArray):void { >> var fileRef:FileReference = new FileReference(); >> fileRef.save(pdfBinary,"MyReport.pdf"); >> } >> >> But then of course I get the security error below from savePDF: >> >> Error: Error #2176: Certain actions, such as those that display a pop-up >> window, may only be invoked upon user interaction, for example by a mouse >> click or button press. >> at flash.net::FileReference/_save() >> >> Any good ideas for displaying a busy cursor or indeterminate progress bar >> while doing a long-running synchronous operation? >> >> >> On Wed, Nov 11, 2009 at 9:59 AM, Richard Rodseth <[email protected]>wrote: >> >>> Thanks. Yes, I wasn't expecting to show dynamically-updating progress >>> during the synchronous operation. Just wanted to pop up something (or change >>> the cursor) before, and remove it after. I'll take a closer look at the >>> AlivePDF docs. >>> >>> >>> On Wed, Nov 11, 2009 at 6:24 AM, ag_rcuren <[email protected] >>> > wrote: >>> >>>> >>>> >>>> I am not fully sure how AlivePDF works because I have never used it but >>>> I thought that it could be done asynchronously because I saw a complete >>>> event in the documentation that reads: >>>> "Dispatched when PDF has been generated and available. The save() method >>>> generate this event" >>>> >>>> That to me says that it can be generated asynchronously but like I said >>>> I really dont know. >>>> >>>> As far as showing progress during a synchronous call it is not possible. >>>> This is because the synchronous call does not return until it is done and >>>> thus the UI will never get a chance to update during the process. >>>> >>>> If you want to show something before that is possible. You could use a >>>> timer or you may want to look at the callLater method of displayObject as >>>> this will wait one frame before calling the method you want. This would >>>> allow you to show say a pop up or something so they user could at least see >>>> something. >>>> >>>> >>>> --- In [email protected] <flexcoders%40yahoogroups.com>, >>>> Richard Rodseth <rrods...@...> wrote: >>>> > >>>> > What's a good way to display progress or a busy cursor for a >>>> potentially >>>> > long-running, but synchronous operation (in my case generating a PDF >>>> using >>>> > AlivePDF) ? >>>> > >>>> > As noted here, CursorManager.setBusyCursor doesn't display the cursor >>>> until >>>> > there is no code running, and PopupManager seems to act similarly. >>>> > >>>> > Defer initiation of the operation using a timer? >>>> > >>>> >>>> >>>> >>> >>> >> >

