Heavy calculation prevents screen update?

I’m not 100% sure thats the problem, but It seems so.
One other thing it could be, is maybe the screen doesnt update untill an event listener has completely finished?

Anyway here is my problem: My app does some pretty heavy calculations when the user clicks on a certain button. From testing, the calculation can take up to 3 seconds to complete. What I want to happen is, as soon as the user clicks the button, a “please wait” appears in the middle of the screen. 3 seconds later, after the calculations have completed, the “please wait” sprite disappears again.

However I cant seem to make that happen. Right now, when the user clicks the button, the please wait sprite does not show up at all. Using trace statements I’m pretty sure whats actually happening is, after the 3 seconds of calculations, the please wait sprite is set to visible and then invisible at essentially the same time, so you dont actually get to see it on screen.

Heres the code:


		private function mouseDownListener(e:MouseEvent):void {			
						
			pleaseWaitSprite.visible = true;
			trace("now visible");

                       // some very time consuming code happens here...


			pleaseWaitSprite.visible = false;
			trace("now invisible");
			
		}		

The trace statements “now visible” and “now invisible” show up at exactly the same time in the output window, even though there is 3 seconds of calculations between them. I guess the same thing is happening with the visible code.

Ive tried e.updateAfterEvent() but not surprisingly that didnt help. I think I need something more like e.updateDuringEvent() … ?