FlashにFPSを表示する

FlashFpsを表示するクラスを書きました。

/**
 * Fps表示クラス
 *
 * 動作環境: Flash 6 以降 (ActionScript2.0)
 */
class Fps {
    /**
     * コンストラクタ
     * @param param 設定値(省略可){ interval:取得間隔, textColor:Fpsの表示色 }
     */
    public function Fps(param:Object) {
        var fpsBase = _root.createEmptyMovieClip("FpsCounterBase", _root.getNextHighestDepth());
        fpsBase.createTextField("FpsCounterText", 0, 0, 0, 60, 30);
        
        var textF:TextField = fpsBase.FpsCounterText;
        textF.textColor = param.textColor == undefined ? 0x000000 : param.textColor;
        textF.selectable = false;
        
        var frameCount = 0;
        var interval = param.interval == undefined ? 20 : param.interval;
        var oldTime = getTimer();
        fpsBase.onEnterFrame = function() {
            if(++frameCount >= interval){
                var currentTime = getTimer();
                var fps = interval * 1000 / (currentTime - oldTime);
                textF.text = Math.round(fps * 10) / 10 + " fps";
                frameCount = 0;
                oldTime = currentTime;
            }
        }
    }
}


このクラスの使い方

スクリプトのどこかに、

new Fps();

と書くだけでOKです。


デバッグのときだけ表示したいって場合にも、リリースの時にこの一行をコメントアウトするだけでOKなので楽ですね。


Fpsの表示色を変えたいときは

new Fps({textColor:0xffffff});

とやれば、変更できます。


本当は表示位置やらTextFormatやらを同じように指定できるようにしたかったのですが、ごちゃごちゃしそうなのでやめておきました。
もし、フォーマットとかサイズを変更したい場合は適当に改変してください。


ファイルとしても置いておきます。
Fps.as