
Код:
class AdvancedMovie extends MovieClip {
private var _interval:Number;
private var _updateAfter:Number;
private var _fps:Number;
private var initFPS:Number;
private var broadcastMessage:Function;
public var addListener:Function;
public var removeListener:Function;
private function AdvancedMovie() {
super();
AsBroadcaster.initialize(this);
this.init(this.initFPS);
}
private function init(fps:Number):Void {
this._fps = !isNaN(fps) && fps>0? fps: 1;
this._updateAfter = Math.round(1000/this.fps);
if(this._interval){
clearInterval(this._interval);
}
this._interval = setInterval(this, "broadcastOnFPS", this._updateAfter);
}
private function broadcastOnFPS():Void {
this.broadcastMessage("onFPS");
}
public function set fps(value:Number):Void {
this.init(value);
}
public function get fps():Number {
return this._fps;
}
}
Использование (вначале нужно создать в библиотеке мувик с идентификатором AdvancedMovie + класс должен быть прописан) :

Код:
import AdvancedMovie;
var FPS:Number = 31;
/*
initFPS значение fps, которое будет у экземпляра после создатия.
*/
var test:AdvancedMovie = AdvancedMovie(this.attachMovie("AdvancedMovie","__test",0, {initFPS: FPS}));
var onFPS:Function = function():Void {
trace("test.fps="+test.fps);
}
test.addListener(this);
Вроде бы работает.
+
Все действия должны происходить в обработчике события onFPS.