нету штатного способа заставить плеер перерисовывать экран когда попало, т.е. все строго: в каждом кадре сначала код - потом ренедеринг графики
есть некоторые события, для которых предусмотрена 'немедленная' перерисовка, но подключать их к такому раскладу в качестве 'костылей' ничего кроме путаницы не даст, имхо
но можно просто разнести эти вещи (показ иконки, вычисления, изменение иконки,..) по кадрам:

Код AS3:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.utils.getTimer;
public class Main extends Sprite
{
private var queue:Array;
public function Main():void
{
// очередь действий, которые надо разнести по кадрам
queue = [showIcon, calculation, hideIcon];
addEventListener(Event.ENTER_FRAME, enterFrame);
}
private function enterFrame(e:Event):void
{
// если есть очередь, то выполняем, если пусто - отписываемся от события
queue.length ? queue.shift()() : removeEventListener(Event.ENTER_FRAME, enterFrame);
}
private function showIcon():void
{
graphics.clear();
graphics.beginFill(0x00ff00);
graphics.drawCircle(0, 0, 100);
graphics.endFill();
}
private function hideIcon():void
{
graphics.clear();
}
private function calculation():void
{
var t:Number = getTimer();
var a:int;
while (getTimer() - t < 2000) a++;
}
}
}