Пытаюсь понять, то ли меня дурят пользователи, то ли я сам чего-то не понимаю. По словам некоторых индикатор работает вдвое дольше требуемого. У меня везде работает штатно.
Сам индикатор работает так. Вычисляю длительность процесса в секундах (варьируется от 0.1 до примерно 40 секунд), умножаю на 30 (частота кадров приложения) и получаю количество фреймов, за которые бар индикатора должен дорасти от нуля до единицы. Отсюда получаю приращение бара индикатора deltaScale в сотых долях на каждый фрейм. Храню в целом числе (т.е., изначально умножаю на 100, а потом, чтобы получить сотые доли делю на 10000).
Затем просто вешаю на событие enterFrame вызов вот этой функции и жду, пока бар вырастет до единицы:

Код AS3:
private function showIndicator(e:Event) {
loadingIndicator.growBar.scaleX += deltaScale / 10000;
if (loadingIndicator.growBar.scaleX>=1) {
loadingIndicator.removeEventListener("enterFrame",showIndicator);
removeChild(loadingIndicator);
loadingIndicator = null;
}
}