ひっと

ActionScript FPSの設定と表示

~ Flashアプリ、ゲームのためのAS3サンプルプログラム集 ~

FPSの設定と表示


誤差もありますが設定したFPSに近い値でフレームを更新できているようです。
起動直後は速度が安定しないみたいですね。

フレームレートを設定する

フレームレートはコンフィグXMLファイルから設定できます。
CPUの処理が追いつかないときはこの値を下回ることもあります。

<flex-config>
 <output>Main.swf</output>
  <default-size>
    <width>400</width>
    <height>300</height>
  </default-size>
  <default-frame-rate>60</default-frame-rate>
  <default-background-color>0xFFFFFF</default-background-color>
  <use-network>false</use-network>
</flex-config>

フレームレートは60はやり過ぎかも。
30もあれば十分な気がする。

FPSを表示する


package
{
    import flash.display.*;
    import flash.events.*;
    import flash.utils.*;
    import flash.text.*;

    public class Main extends Sprite
    {
        private var tOld:Number;
        private var tFPS:TextField = new TextField();

        public function Main()
        {
            //FPS表示用TextField
            tFPS.width  = 200;
            tFPS.height = 20;
            tFPS.x = 0;
            tFPS.y = 0;
            this.addChild(tFPS);

            tOld = getTimer();

            //毎フレーム呼ばれるイベントを登録
            this.stage.addEventListener(Event.ENTER_FRAME, OnEnterFrame);
        }

        private function OnEnterFrame(e:Event):void
        {
            //FPSの計算

            //getTimerで再生開始からの時間をミリ秒単位で取得できる
            var tNew:Number = getTimer();
            if(tNew == tOld) {
                //このプログラム、何もしてないのでここを通ることもあります。
            } else {
                //前回フレームからの経過時間を元に小数点1桁までFPSを表示
                var rate:Number = Math.round( 10000/(tNew-tOld) )/10;
                tFPS.text = rate.toString() + " FPS";

                tOld = tNew;
		
            }
        }

    }
}

目次へ
52888