Nirth,посмотрел твой класс, и в который раз не пойму причем/зачем здесь диспатчер
вот ты заводишь диспатчер, который по сетинтервалу вызывает некий метод объекта (у тебя он 'onEnterFrame' назывется, видимо для красивости)
почему нельзя по-простому запустить setInteval, который точно также будет вызывать упомянутый метод
нужен updateAfterEvent() добавляем, нужны листенеры - тоже не вопрос: добавляем прямо сюда..
короче, 'скрипач не нужен' (C)кин-дза-дза ,имхо

Код:
class FPS{
var onEnterFrame: Function;
private var _framerate, intID : Number;
private var listeners:Array;
function FPS (frameRate){
_fps = frameRate;
listeners=[this]
}
function get _fps(){
return _framerate;
}
function set _fps (frameRate){
clearInterval (intID);
_framerate = frameRate
intID=setInterval(this,'update',1000 / frameRate)
}
function stop (){
clearInterval (intID);
}
function play (){
_fps = _framerate;
}
private function update(){
for(var i in listeners) listeners[i].onEnterFrame();
updateAfterEvent();
}
function addListener(obj){
listeners.push(obj)
}
}