サイトトップ

Director Flash 書籍 業務内容 プロフィール

Macromedia Flash非公式テクニカルノート

Starlingフレームワークでフレームレートや使用メモリをモニタリングしたい − Starling.showStatsプロパティ

ID: FN1204009 Platform: All Version: CS5/ActionScript 3.0 Runtime: Flash Player 11/AIR 3.0

Starlingクラス
パッケージ starling.core
継承 Starling → EventDispatcher → Object
showStatsプロパティ
文法 showStats:Boolean
プロパティ値 trueに設定すると、フレームレートと使用メモリをステージ左上角に表示する。デフォルト値はfalseで表示しない。
実装 public function get showStats():Boolean
public function set showStats(value:Boolean):void

説明
Starling.showStatsプロパティをtrueに定めると、ステージ左上角に動作情報を表示する領域が表れ、フレームレート(FPS)と使用メモリ(MB)が示されます(図001)[*1]。デフォルト値はfalseで、情報は表示されません。

図001■ステージ左上角にフレームレートと使用メモリが表示される
図001

Flashムービー(FLA)ファイルのフレームアクションからは、つぎのようにStarling.showStatsプロパティで動作情報を表示します。

import starling.core.Starling;
var myStarling:Starling = new Starling(ルートクラス, stage);
myStarling.showStats = true;
myStarling.start();

ルートクラスやその子インスタンスからStarlingオブジェクトを参照するには、静的プロパティStarling.currentを用います。

public function ルートクラスコンストラクタ() {
  Starling.current.showStats = true;
  // その他初期化のコード
}

[*1] 2012年7月18日に動作情報としてフレーム当たりの描画回数が加わりました(図002)。

図002■動作情報に描画回数/フレームが加わった
図002

ただし、本稿執筆時「Starling Framework」公式ページからのダウンロードファイル(version 1.1)には、まだ追加が反映されていません。GitHubからstarling.coreパッケージを取得して置換える必要があります(図003)。

図003■GitHubに示されたstarling.coreパッケージの中身
図003


実装
動作情報の表示領域はStatsDisplayインスタンスとしてつくられます。StatsDisplayクラスは、このために新たに備えられたクラスです[*2]。getアクセサメソッドStarling.showStats()は、引数にtrueを受取ると、StatsDisplayインスタンスがまだなければつくって、StarlingのStageオブジェクトの表示リストに子インスタンスとして加えます。引数がfalseなら、StatsDisplayオブジェクトを表示リストから除いて、参照を消します。

public class Starling extends EventDispatcher {
  // ...[中略]...
  private var mStage:Stage;   // starling.display.stage!
  // ...[中略]...
  private var mStatsDisplay:StatsDisplay;
  // ...[中略]...
  public function get showStats():Boolean { return mStatsDisplay != null; }
  public function set showStats(value:Boolean):void {
    if (mContext == null) {
      // Starling is not yet ready - we postpone this until it's initialized.
      addEventListener(starling.events.Event.ROOT_CREATED, onRootCreated);
    } else {
      if (value && mStatsDisplay == null) {
        mStatsDisplay = new StatsDisplay();
        mStatsDisplay.touchable = false;
        mStatsDisplay.scaleX = mStatsDisplay.scaleY = 1.0 / contentScaleFactor;
        mStage.addChild(mStatsDisplay);
      } else if (!value && mStatsDisplay) {
        mStatsDisplay.removeFromParent(true);
        mStatsDisplay = null;
      }
    }
    function onRootCreated(event:Object):void {
      showStats = value;
      removeEventListener(starling.events.Event.ROOT_CREATED, onRootCreated);
    }
  }
  // ...[中略]...
}

[*2] StatsDisplayクラスの実装は、GitHub「StatsDisplay.as」でご覧になれます。


参考
[Starling Framework Reference] > [Starling]「showStats property


作成者: 野中文雄
更新日: 2012年7月31日 更新情報を追加。
作成日: 2012年4月18日


Copyright © 2001-2012 Fumio Nonaka.  All rights reserved.