ActionScript 3.0で始めるオブジェクト指向スクリプティング

第20回 戻り値をクラスで定義する

この記事を読むのに必要な時間:およそ 2.5 分

すると,MyTimerInfoクラスは,以下のように修正される(スクリプト2⁠⁠。コンストラクタメソッドがミリ秒数の数値を受取り,それを新たに定義したメソッドsetTime()に渡す。そして, setTime()メソッドはミリ秒数から時分秒ミリ秒を計算して,各インスタンスプロパティに値を設定するのだ。

setTime()メソッドの処理内容は,基本的にMyTimerクラスに定義されていた静的(static)なメソッドtranslateToTimeObject()と同じなので,とくに説明は要らないだろう※3⁠。なお,setTime()は静的メソッドでなくインスタンスメソッドとし,private属性を指定した。

スクリプト2 MyTimerInfoクラスのコンストラクタがミリ秒数を受取る

// ActionScript 3.0クラス定義ファイル: MyTimerInfo.as
package {
  public class MyTimerInfo {
    public var milliseconds:int;
    public var seconds:int;
    public var minutes:int;
    public var hours:int;
    public function MyTimerInfo(nMilliseconds:Number=0) {
      setTime(nMilliseconds);
    }
    private function setTime(nTime:Number):void {
      milliseconds = nTime % 1000;
      nTime = Math.floor(nTime / 1000);
      seconds = nTime % 60;
      nTime = Math.floor(nTime / 60);
      minutes = nTime % 60;
      hours = Math.floor(nTime / 60);
    }
  }
}

前回と同じく※4⁠,Flashムービーファイルにつぎのようなフレームアクションを記述すれば,ステージをクリックするたびに,MyTimerインスタンスを生成してから経過した時分秒ミリ秒が[出力]パネルに表示される図4⁠。

var myObject:MyTimer = new MyTimer();
stage.addEventListener(MouseEvent.CLICK, xTrace);
function xTrace(eventObject:MouseEvent):void {
  var oElapsedTime:MyTimerInfo = myObject.getElapsedTime();
  trace(oElapsedTime.hours);
  trace(oElapsedTime.minutes);
  trace(oElapsedTime.seconds);
  trace(oElapsedTime.milliseconds);
}

図4 クリックすると経過した時分秒ミリ秒が[出力]される

図4 クリックすると経過した時分秒ミリ秒が[出力]される

次回は,MyTimerInfoクラスにさらに手を加えるつもりだ。

※3)
各値の求め方については,前の第19回Objectクラスと静的メソッドの定義「ミリ秒から時分秒を計算する」を参照してほしい。
※4)
ただし,MyTimer.getElapsedTime()メソッドの戻り値は,MyTimerInfoクラスで指定した。

今回解説した次のサンプルファイルがダウンロードできます。

著者プロフィール

野中文雄(のなかふみお)

ソフトウェアトレーナー,テクニカルライター,オーサリングエンジニア。上智大学法学部卒,慶応義塾大学大学院経営管理研究科修士課程修了(MBA)。独立系パソコン販売会社で,総務・人事,企画,外資系企業担当営業などに携わる。その後,マルチメディアコンテンツ制作会社に転職。ソフトウェアトレーニング,コンテンツ制作などの業務を担当する。2001年11月に独立。Web制作者に向けた情報発信プロジェクトF-siteにも参加する。株式会社ロクナナ取締役(非常勤)。

URLhttp://www.FumioNonaka.com/

著書