Я решаю эту проблему с помощью тиков:

Код AS3:
private var _time: Number = 0;
private var _timeLastUpdate: Number;
осуществляю подписку

Код AS3:
GameConfig.stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
и каждый кадр просчитываю сколько действий нужно выполнить

Код AS3:
private function onEnterFrame(e: Event): void
{
var timeNow: Number = new Date().getTime();
_time += timeNow - _timeLastUpdate;
_timeLastUpdate = timeNow;
while (_time > Number(1000 / GameConfig.TPS)) {
_time -= Number(1000 / GameConfig.TPS);
tick();
}
}
GameConfig.TPS - это количество тиков в секунду
tick() - функция, которая будет вызываться с необходимой нам частотой.